!
средства инвертируют булево состояние, два !
, с является ничем специальным кроме двойного отрицания.
!true == false
# => true
Это является наиболее часто используемым, чтобы вынудить метод возвратить булевскую переменную. Это обнаружит любой вид правдоподобия, такого как строка, целые числа и что не, и превращают его в булевскую переменную.
!"wtf"
# => false
!!"wtf"
# => true
А более реальный вариант использования:
def title
"I return a string."
end
def title_exists?
!!title
end
Это полезно, когда Вы хотите удостовериться, что булевская переменная возвращается. По моему скромному мнению, это довольно бессмысленно, тем не менее, наблюдение, которое и if 'some string'
и if true
тот же самый поток, но некоторые люди находят полезным явно возвратить булевскую переменную.
Никогда не использовал эту технику и не изучал статью в Википедии по этой теме, «Длинный опрос» кажется единственным жизнеспособным решением. Это кажется довольно простым в реализации путем бесконечного цикла и ожидания сценария на сервере. На странице HTTP Streaming есть некоторый фактический код , ссылка на который содержится в статье в Википедии.
Вы пробовали что-нибудь из этого и сталкивались с конкретными проблемами?
Вы можете ознакомиться с этой статьей , это действительно хорошее начало для понимания концепций программирования комет.
Вы найдете здесь два примера. Первый использует технику iframe, а второй - постоянное соединение.
You should use polling, or use a web server which is specially conceived for long requests and COMET, with a good JS backend:
function listen() {
$.get("/mylongrequestfile", {}, function(data) {
$("#mydiv").html(data);
listen(); // then launch again
}));
};
Remember that COMET is "wait for data, if there's data return and exit", so JS backend will have to parse the data and re-launch the process of asking the server.
In this example, if there is a server side problem or just a disconnection from the user side, the entire process will be broken (the function is only called if the request is successful)
Для IIS есть WebSync . Однако, так как вы используете PHP, возможно, лучше использовать WebSync On-Demand. Любой из них даст вам нужный сервер, и он прост в использовании. Взгляните на этот квест n также, который, в основном, то, что вы ищете.
Вот простой пример WebSync On-Demand in action с использованием скриптового языка no. Просто откройте в двух окнах и посмотрите на публикацию/подписку в действии.
Для публикации с сервера вы можете использовать PHP api.
У меня есть очень простой пример, который поможет вам начать работу с кометой. Он охватывает компиляцию Nginx с модулем NHPM и включает код для простых ролей издателя/подписчика в jQuery, PHP и Bash.
http://blog.jameisaacs.com/2010/08/27/comet-with-nginx-and-jquery/
Рабочий пример (простой чат) можно найти здесь:
http:/ /cheetah.jameisaacs.com/