当我尝试与我的套接字io进行通信时,建立了连接并且正在进行websocket写入,但是听觉信号没有在服务器上发出..所以我没有在客户端接收任何内容。但是当我再次断开并连接服务器时,旧的书面消息就会被发出。请帮我解决这个问题。谢谢 我尝试过不同的端口号,但它不起作用。
app.js(服务器):
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
server.listen(3000);
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log("Connected");
});
});
index.html(客户端)
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
答案 0 :(得分:1)
由于防火墙或防病毒软件,Socket.io可能会运行不稳定。这实际上是WebSockets的一个问题。
要解决这个问题,您可以尝试从客户端和服务器之间的传输中排除WebSockets,并在服务器端指定XHR长轮询和JSONP(因为这两个是最稳定的):
io.set('transports', ['xhr-polling', 'jsonp-polling']);
我还建议您查看Engine.io。这个框架是由Socket.io作者编写的,它更加稳定。
诀窍如下:
虽然Socket.io首先尝试通过WebSockets连接(当此尝试失败时,用户将不得不等待大约10秒才能切换到另一个传输),Engine.io尝试通过XHR(在100%情况下工作)进行连接,并且同时尝试WebSocket连接,如果成功 - 切换到WebSockets。
编辑:Socket.io版本1.0+构建于Engine.io的顶部,因此它现在具有上述所有优势。