晚上好社区,我努力解决这个问题,但我认为我需要你的智慧,因为我真的不知道这里的问题是什么。我有一个node.js服务器,通过express服务index.html。我目前正在开始使用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);
});
在我服务器上的控制台上,我看到了#34;有人敲门#34;每秒打印数百或数千次,导致CPU负载达到100%。与此同时,我可以在客户端(在Chrome中)看到正在制作数百个xhr民意调查。
我真的无法弄清楚为什么在第一次连接尝试后没有建立连接,并经常重试。此外,我甚至不知道为什么它甚至使用xhr轮询而不是websockets。
非常感谢帮助。非常感谢你。
答案 0 :(得分:3)
你必须在客户端和服务器上使用相同版本的socket.io(我在5天前遇到了同样的问题),请在控制台上查看:
npm list socket.io
服务器的版本,看看你在index.html上使用相同的版本,就像这样:
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
您可以从此处获取网址:
此致