javascript - 如何检测 socket.io 传输何时发生变化? (事件或某事)

标签 javascript socket.io

我正在尝试使用 socket.io 客户端连接到服务器 io.js+socket.io。它从 xhr 轮询请求开始,连接事件甚至第一条消息都通过 xhr 接收,然后升级到 websocket。我如何检测传输的切换何时恰好记录它(在两侧)?

简化的服务器代码:

io.on("connection",function(socket){
    console.log("transport",socket.conn.transport.name); //will print "polling"
    socket.on("join",function(data){
        console.log("transport",socket.conn.transport.name); //will print "polling" (usualy)
        console.log("userjoined",data.userInfo);
    });
    socket.on("testMsg",function(data){
        console.log("transport",socket.conn.transport.name); //will print "websocket" (if it supported and already switched)
    });
    socket.emit("hello","hello");
})

简化的客户端代码:

var socket = io.connect();
socket.on("hello",function(data){
    socket.emit("join",{userInfo: {name:"someName"}});
    setTimeout(function(){
        socket.emit("testMsg",{}); 
    },8000)
});

最佳答案

客户端

您可以通过以下方式捕捉变化:

<script>
  var socket = io();

  /* Transport */
  socket.io.engine.on('upgrade', function(transport) {
    console.log('transport changed');
  });
</script>

服务器端

您可以通过以下方式捕捉变化:

io.on('connection', function(socket) {
  console.log('User connected')

  // Transport event
  socket.conn.on('upgrade', function(transport) {
      console.log('transport changed')
  })
})

关于javascript - 如何检测 socket.io 传输何时发生变化? (事件或某事),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28611267/

相关文章:

javascript - ChartJS : How to add empty values?

javascript - 在 jQuery 中将多个事件附加到单个函数

node.js - 如何对使用 cookie 的 socket.io 中间件进行单元测试

go - 这个 golang socket.io 示例中的 mux 是否必要?

javascript - ng-grid 和实时数据内存泄漏

javascript - 为什么 Document.querySelector 比 Element.querySelector 更高效

javascript - 使用Javascript D3库,如何替换矩形选择中的数据?

javascript - 是否可以测试 XmlHttpRequest 是否会命中缓存而不是服务器?

node.js - 我应该如何在 node.js 中保留用于 socket.io 交互的临时数据?

javascript - 带有 socket.io 的 Nodejs 集群失去连接