晚上SO社區,我很努力地解決這個問題,但我想我需要你的智慧,因爲我真的不知道這裏有什麼問題。我有一個node.js服務器,它通過express來提供index.html。我目前正在開始使用socket.io。Node.js和socket.io成千上萬的連接嘗試失敗
這是我的客戶端代碼:
$(document).ready(function() {
document.getElementById("start").addEventListener("click", startGame);
function startGame() {
var socket = io(); console.log("Sending request to server");
socket.emit('connectToTable', {tableID: 1});
socket.on('successfulConnection', function(msg){
alert(msg);
}); }
});
這是我的服務器端代碼:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var express = require('express');
var port = process.env.PORT || 3000;
path = require('path');
app.use(express.static(path.join(__dirname, '/')));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log("There is someone knocking on the door")
socket.on('connectToTable', function(socket){
console.log("Received player request")
var player = new Player(socket.id);
socket.emit('successfulConnection', "The connection to the server has been successful");
});
});
http.listen(port, function(){
console.log('listening on *:' + port);
});
在我的我看到「在服務器上的控制檯有人敲門「每秒打印數百或數千次,導致100%的CPU負載。同時,我可以在客戶端(在Chrome中)看到正在進行數百次xhr民意調查。
我真的不明白,爲什麼第一次連接嘗試之後沒有建立連接和重試SOOO頻繁。此外,我甚至不明白爲什麼它甚至使用xhr輪詢而不是websockets。
幫助將非常高度讚賞。提前謝謝你。
有,這是由缺少分號在執行console.log()線在服務器端的結束造成的任何機會呢? – Jordan
此外,我會刪除'新玩家'行作爲測試,看看是否可能導致該事件內的異常。 – Jordan
@Jordan:不幸的不是。我剛剛嘗試過,我之前沒有在代碼中使用過這個console.log。而且現代JS不應該太在意這一點。但好主意。我很好奇可能會導致這個問題..真的不知道了。我不知道它是否可能與通過快遞根文件夾的靜態服務有關... 編輯:刪除它沒有幫助。我沒有得到任何錯誤順便說一句。 – DesperateEi