- PVSM.RU - https://www.pvsm.ru -
Comet — любая модель работы веб-приложения, при которой постоянное HTTP-соединение позволяет веб-серверу отправлять (push) данные браузеру без дополнительного запроса со стороны браузера.
На схеме изображено место комет сервера в процессе работы.
Взаимодействие с комет сервером построено следующим образом.
Существует не мало подходов для реализации, но актуальным на данный момент является WebSockets, в использовании остальных подходов таких как Polling, Long polling, «бесконечный» iframe и Flash сокеты уже почти необходимости так как вебсокеты уже поддерживаются всем современными браузерами [1].
Будет хорошо если кто то ещё поделится ссылками на похожие проекты.
Название | Лицензия | API |
Centrifuge [2] | MIT | Python, Ruby, Java, PHP |
Nginx Push Stream Module [3] | GPL | REST API |
dklab_realplexor [4] | GPL | PHP |
comet-server.ru [5] | Как сервис, С установкой на свои сервера |
Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk, Node.js, Bash, Компонентный Паскаль и Tcl (Все языки для которых есть MySQL клиент) |
fanout.io [6] | Как сервис, С установкой на свои сервера |
Python, Ruby, PHP, Node, Go, Django |
pusher.com [7] | Как сервис | REST API и библиотеки для Ruby, PHP, .NET, Node.js, Python |
hydna.com [8] | Как сервис | C++, Erlang, Go (Push only), Java, JavaScript, Julia (Push only), Lua (Push only), .NET, Node.js, Objective-C, PHP (Push only), Python (Push only), Ruby (Push only) |
tambur.io [9] | Как сервис | Ruby, Python, PHP, Java, Erlang |
Есть ещё сводная таблица реализаций комет серверов [10] но она датирована аж 2009 годом
Разберём пример построения чата. В качестве комет сервера будем использовать comet-server.ru [11]
Чат будет работать следующим образом:
<!DOCTYPE HTML>
<html>
<head>
<!-- Подключаем библиотеки -->
<script src="//comet-server.ru/CometServerApi.js" type="text/javascript"></script>
<script src="//comet-server.ru/doc/CometQL/simplePhpChat/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<!-- Блок в который мы добавим полученное сообщение -->
<div id="textHolder" style="margin-top:10px; border:1px solid #000;padding:10px;"></div>
<hr>
<input type="text" id="msgText" placeholder="Текст сообщения"><input type="button" value="Отправить" onclick="sendMsg();">
Для связи с комет сервером используется <a href="http://comet-server.ru/wiki/doku.php/comet:cometql">CometQL</a>. CometQL - это api для работы с комет сервером по протоколу MySQL.
<script type="text/javascript">
$(document).ready(function(){
/**
* Подписываемся на получение сообщения из канала SimplePhpChat
*/
CometServer().subscription("SimplePhpChat", function(event){
console.log("Мы получили сообщение из канала SimplePhpChat", event.data, event);
$("#textHolder").html( $("#textHolder").html() +"<hr>"+event.data);
})
/**
* Подключение к комет серверу. Для возможности принимать команды.
* dev_id ваш публичный идентифиукатор разработчика
*/
CometServer().start({dev_id:15 })
})
function sendMsg(){
var text = $("#msgText").val();
jQuery.ajax({
url: "//comet-server.ru/doc/CometQL/simplePhpChat/sendMsgToChat.php",
type: "GET",
data:"text="+encodeURIComponent(text),
success: function(){
$("#msgText").val('');
}
});
}
</script>
</body>
</html>
<?php
// Подключаемся к комет серверу с логином и паролем для демо доступа (получить свои данные для подключения можно после регистрации на comet-server.ru )
// Логин 15
// Пароль lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8
// База данных CometQL_v1
$link = mysqli_connect("app.comet-server.ru", "15", "lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8", "CometQL_v1");
// Отправляем сообщение в канал
mysqli_query ( $link, "INSERT INTO pipes_messages (name, event, message)VALUES('SimplePhpChat', '', '".mysqli_real_escape_string($link,htmlspecialchars($_GET['text']))."' );" );
Демо работы чата здесь [12].
Тут [13] ещё один пример чата, но в нём php сервер вообще не используется, всю работу выполняет comet сервер. А здесь [14] пример чата с авторизацией на комет сервере.
Автор: Star.Comet
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/106833
Ссылки в тексте:
[1] всем современными браузерами: http://caniuse.com/#search=WebSockets
[2] Centrifuge: http://habrahabr.ru/post/268717/
[3] Nginx Push Stream Module: https://github.com/wandenberg/nginx-push-stream-module
[4] dklab_realplexor: http://habrahabr.ru/post/79189/
[5] comet-server.ru: http://comet-server.ru/menu_id/10
[6] fanout.io: https://fanout.io/pricing/
[7] pusher.com: http://pusher.com/pricing
[8] hydna.com: https://www.hydna.com/plans-and-pricing/
[9] tambur.io: https://www.tambur.io/pricing
[10] сводная таблица реализаций комет серверов: http://cometdaily.com/maturity.html
[11] comet-server.ru: http://comet-server.ru
[12] здесь: http://comet-server.ru/doc/CometQL/simplePhpChat/index.html
[13] Тут: http://comet-server.ru/wiki/doku.php/comet:simple-chat-example
[14] здесь: http://comet-server.ru/wiki/doku.php/comet:chat-with-authorization
[15] Источник: http://habrahabr.ru/post/273573/
Нажмите здесь для печати.