websocket是一种适合聊天应用的技术吗?

Is websocket a right technology for Chat Application?

本文关键字:应用 聊天 技术 一种 websocket      更新时间:2023-09-26

我使用websocket创建了一个小聊天应用,用户可以加入聊天室,可以与多个用户或组聊天。

可以同时最多80到100个用户可以发送消息(这是我的要求)

所以我的问题是,websocket对我有用吗?

是的。

事实上,聊天是一个最常见的web套接字应用的例子。

http://socket.io/get-started/chat/

我想你想问的是:"服务器可以保持良好的性能与100+ websocket连接活动"?

答案也是:肯定是。

证明是基准。一个服务器可以轻松处理超过1000个websocket连接,没有问题。

:

  • 服务器中有一百万个websockets https://mrotaru.wordpress.com/2012/11/12/websocket-server-handling-millions-of-concurrent-users-true-or-false/

  • 5万个websocket连接在一个nginx中https://www.nginx.com/blog/nginx-websockets-performance/

  • 600,000 ws连接在AWS http://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/

  • 与rest的比较http://blog.arungupta.me/rest-vs-websocket-comparison-benchmarks/(剧透警告:rest比websockets慢)

Websockets可以用于允许每个客户端从服务器获取更新,而无需定期轮询服务器。

如果你想要真正的响应(即显示文本当人们正在输入),那么Websockets是你所需要的。但是,如果您愿意在消息发送后等待1秒来显示消息,您也可以使用周期性get请求。

但是要考虑使用你的应用程序的浏览器。

添加到Matthaus Woolard所说的,不是所有的浏览器都支持websocket(如Opera mini),所以为了使你的应用程序工作,你需要使用websocket长轮询进行设计。要检测websocket可用性,可以使用$。Get或$。ajax方法将请求发送到WebSocket端点。如果连接成功,onopen事件将被触发,您可以使用onmessage事件来处理传入的消息。如果连接不成功,将触发onerror或onclose事件。下面是一个例子:

var socket = new WebSocket("ws://example.com/ws");
socket.onopen = function() {
    console.log("WebSocket connection opened.");
    //run your websocket node.js here
};
socket.onmessage = function(event) {
    console.log("Received message: " + event.data);
    //run your websocket node.js here
};
socket.onerror = function(event) {
    console.log("WebSocket error: " + event);
   //fall back to long polling here
};
socket.onclose = function() {
    console.log("WebSocket connection closed.");
   //fall back to long polling he
};