![](/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.