![](/img/trans.png)
[英]WebSocket connection error when creating a chat application with Django
[英]Is websocket a right technology for Chat Application?
我使用 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/
单个Nginx中有50.000个Websocket连接https://www.nginx.com/blog/nginx-websockets-performance/
AWS中的600.000 ws连接http://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/
比较与休息http://blog.arungupta.me/rest-vs-websocket-comparison-benchmarks/ (扰流警报:休息比websocket慢)
Websocket可用于允许每个客户端从服务器获取更新,而无需定期轮询服务器。
如果您想真正响应(即在人们打字时显示文本),那么Websockets是您所需要的。 但是,如果您乐意在发送消息后等待一秒钟以显示消息,则也可以使用定期的get请求。
不过,请考虑将要使用您的应用的浏览器。 请参阅: 我可以兼容使用Websocket 。
补充一下 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
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.