gpt4 book ai didi

javascript - Socket.IO 不使用后备方法

转载 作者:行者123 更新时间:2023-11-29 21:58:19 25 4
gpt4 key购买 nike

我有一个运行 socket.io 服务器的 Node 服务器和一个与之配合使用的客户端。简单的故事,我需要能够在两者之间传递消息。这在支持网络套接字的浏览器中按预期工作,但是当需要使用回退方法时它不起作用。我应该提一下,页面由 apache 服务器提供,而 Node 服务器仅用于特定页面。我正在使用的代码如下,我已经对此进行了一段时间的修改,但不知道如何修复它。

另外值得一提的是,在IE9(不支持websockets)下打开页面时,记录 connection.io.engine.transport.name 会给出“websocket”。

客户:

            connection = io(window.location.protocol + '//localhost:8888', {
'reconnect': false,
'max reconnection attempts': 0,
'transports':
[
'websocket',
'flashsocket',
'htmlfile',
'xhr-polling',
'jsonp-polling'
]
});

connection.on('connect',function () {
console.log("Socket is open");
$('#dc-status').hide();
connection.emit('message',JSON.stringify(info));

connection.on('message',function (e) {
//DO SOMETHING WITH THE DATA RECIEVED
});
});

服务器: var ioserver = require('socket.io');

var io = ioserver.listen(8888);

var http = require("http");


console.log("server started...");


io.set('transports',[
'websocket',
'flashsocket',
'htmlfile',
'xhr-polling',
'jsonp-polling'
]);

io.sockets.on('connection', function(ws) {

var req;
var order;
var courier;
var after;
var session;
var options = {};
console.log("New client connected");


// console.log("Transport: " + io.transports[ws.id].name);

ws.on('message', function(data) {

//WORK WITH THE DATA RECEIVED
//NOT RELEVANT TO EXAMPLE
console.log('received: %s', data);

parsedData = JSON.parse(data);


});

ws.on('disconnect', function () {
console.log("Connection closed");
});

});

最佳答案

好吧,经过一番努力之后,我找到了一个让套接字在旧浏览器中工作的解决方案。

从 1.0 版开始,Socket.io 使用 Engine.io 而不是负责传输的后备方法。为了获得一个有效的解决方案,我跳过了使用 Socket.io 层,而只使用了 Engine.io。在客户端你有类似的东西

var connection = eio.Socket('host-address');

然后您只需绑定(bind)常规事件(例如消息、关闭)。

并且在服务器部分调用 require('Engine.IO') 而不是 require('Socket.IO'),示例:

var engineio = require('engine.io');
var wss = engineio.listen(10101);

绑定(bind)是一样的。

关于javascript - Socket.IO 不使用后备方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25244711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com