簡體   English   中英

套接字io心跳未發出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM