从同一客户端到同一服务器有两个不同的websocket连接有什么好处吗?对我而言,这似乎是一个糟糕的设计选择,但有什么原因/它应该更好地解决?
在我的网络应用程序中,我有 2 个 websocket 连接到同一端口上的服务器。一个 Websocket 用于聊天信使,同一页面上的另一个 Websocket 显示当前查看该事件的总人数。
聊天网络套接字:
var chat = new WebSocket("ws://localhost:8080/chat");
Run Code Online (Sandbox Code Playgroud)
我的聊天窗口上有一个发送按钮,当用户单击发送按钮时,将调用 send_message 函数,该函数通过 websocket 聊天将消息发送到服务器。
function send_message() {
chat.send("Hey There!");
}
Run Code Online (Sandbox Code Playgroud)
当从服务器收到消息时,我调用 onMessage 函数来获取数据。
chat.onmessage = function(evt) { onMessage(evt) };
function onMessage(evt) {
alert('Message Recived from server: "+evt.data);
}
Run Code Online (Sandbox Code Playgroud)
页面加载后,聊天 Websocket 就会打开,而当任何用户单击加入活动按钮时, attendeeCount Websocket 就会打开。如果有人加入或离开活动,我想向其他用户显示参加者数量增加或减少的实时更新。因此,假设一个用户正在参加一个活动,并且他现在看到的当前与会者人数为 10,而另一个用户加入了该活动,那么该人数应更新为 11。
当用户单击“加入活动”按钮时,将向服务器发出 ajax 调用,并在出席者表中创建一个条目。因此,一旦 ajax 调用在我的 ajax 调用的成功回调中成功,我将打开第二个 websocket 连接并将数据发送到服务器,以向其他用户显示更新的与会者计数。它就像 Facebook 的点赞一样,无需刷新页面即可在您眼前更新。
$.ajax({
type: 'POST',
url: '/mixtri/rest/event/updateAttendeeCount',
contentType: "application/x-www-form-urlencoded",
data: {data},
success: function(result){
var attendeeCount = new WebSocket("ws://localhost:8080/attendeeCount");
attendeeCount.onopen …Run Code Online (Sandbox Code Playgroud)