Web Sockets -向所有客户端发送消息



我对Web Sockets完全陌生,我已经将它们应用到我的聊天中,所以现在它看起来像这样:

<script type='text/javascript'>
var connection = new WebSocket("ws://echo.websocket.org"); //"public" websocket server
     connection.onopen = function () {
        console.log('Connection: OK.');
     };
     connection.onerror = function (error) {
       console.log(Error: ' + error); 
     };
     connection.onmessage = function () {
        $('#chatbox').load('/chatbox.php');
     };
$(document).ready(function() {  
    $('#chatOK').click(function(event) {
     //something
     connection.send('Get new messages.'); 

    });     
});         
</script>

它很好地为一个客户端,当我输入消息,它更新聊天框,但只有我的,但我想更新它为每个人(=所有用户谁已经打开聊天窗口)。那么我如何用WebSockets发送消息到所有的客户端?

你不能用websocket.org回显服务器这样做——它只是回显你发送给发送者的任何内容。

你需要一个服务器来处理分发到所有客户端。使用Publish &订阅消息传递模式:

所有的聊天消息都发布到一个共同的主题,例如:"myChatRoom_1"。

所有连接的客户端都向服务器表明它们对发送到"myChatRoom_1"的消息感兴趣(这是订阅)。

现在,当服务器收到"myChatRoom_1"的已发布事件时,它可以将其分发给所有订阅者。

看一下这个演示,看看它是如何工作的。

它基于Crossbar。io是一个开源的应用路由器,它可以开箱即用,不需要额外的后端。因此,如果使用这种方法,则只需要对浏览器聊天客户端进行更改。如果你想集成你的PHP后端(例如,因为它存储聊天消息的地方),有一个PHP库连接到Crossbar。

完全披露:我为Tavendo工作,他们是Crossbar的维护者。io项目。

相关内容

  • 没有找到相关文章

最新更新