[英]Socket io heartbeat is not emitting
當我嘗試與套接字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>
Socket.io可能由於防火牆或防病毒而不穩定。 這實際上是WebSockets的問題。
為了解決這個問題,您可以嘗試從客戶端和服務器之間的傳輸中排除WebSocket,並在服務器端僅指定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的頂部構建的,因此它具有上述所有優點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.