我正在尝试使用 nodejs 实现设备配对程序。服务端是别人实现的,使用socket io:
var http = require('http'),
io = require('socket.io');
但是我正在配对的设备之一不支持 Websocket(HTML5)。是否可以在不使用套接字 io 的情况下创建套接字 io 客户端,有没有其他选择?
提前致谢。
socket.io 支持各种传输,例如 flashsockets 和 XHR 长轮询。所以你不必使用不同的客户端——即使没有 Websocket 支持,它也应该开箱即用
说到替代方案......有一些客户端库,例如 Python,但我认为没有任何可以在浏览器中运行 - 正如我之前所说,不需要它们。
经过大量尝试和捕捉,我发现我使用的浏览器不支持 Socket.IO.js 中的缓冲行为。第一次发出没有缓冲,因此可以正确发出第一次配对请求。所以我把 Socket.prototype.setBuffer(true) 改成了 Socket.prototype.setBuffer(false)。这可能不是一个干净的解决方案,但在我的情况下它有效。
您可以配置要使用的回退类型
io.configure("production", function() {
io.enable("browser client minification");
io.enable("browser client etag");
io.enable("browser client gzip");
io.set("transports", ['websocket', 'jsonp-polling']);
io.set("log level", 1);
});
io.configure("development", function() {
io.set("transports", ['websocket', 'jsonp-polling']);
});
你可以在这里看到所有的选项on the wiki