我正在尝试使用 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/