我对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消息发送给所有客户端呢?
答案 0 :(得分:1)
您无法使用websocket.org echo服务器执行此操作 - 无论您将其发送回发件人,都可以回复。
您需要一台处理所有客户端分发的服务器。这是使用Publish&amp; amp;订阅消息传递模式:
所有聊天消息都发布到一个共同主题,例如“myChatRoom_1”。
所有连接的客户端都向服务器表明他们对“myChatRoom_1”(即订阅)的消息感兴趣。
现在,当服务器收到“myChatRoom_1”的已发布事件时,它可以将其分发给所有订阅者。
请查看this demo以查看此操作。
它基于Crossbar.io,一个开源应用程序路由器,开箱即用PubSub,没有额外的后端。因此,如果您使用此功能,则需要仅对浏览器聊天客户端实施更改。 如果您想与PHP后端集成(例如,因为这会在某处存储聊天消息),也可以使用PHP library连接到Crossbar.io。
完全披露:我为Tavendo工作,他是Crossbar.io项目的维护者。