我有一个使用socket.io
的Node.js服务器,它通过HTTPS接受来自客户端的连接。
我知道这台服务器可以工作,因为我可以通过浏览器连接到它。
问题是我无法创建一个节点应用程序作为客户端连接到此服务器。
我使用以下代码:
const io = require("socket.io-client");
const socket = io.connect("https://my.website.com:3002", { secure: true, reconnect: true });
socket.on("connect", function(){
console.log("connected");
});
socket.on("disconnect", function(){
console.log("disconnected");
});
socket.on("error", console.error);
服务器没有注册任何连接,此应用程序不记录任何错误。我似乎连接到错误的服务器,但是当我使用浏览器时,这个相同的URL工作正常。
我已经搜索了github和官方文档以获得答案。甚至来自stackoverflow的类似问题似乎都不起作用:
我做错了什么?
答案 0 :(得分:5)
在意识到,并非所有错误都进入"error"
事件(特别感谢@RolandStarke),我发现我有一个一致的XHR池请求:
{ Error: xhr poll error
at XHR.Transport.onError (/Users/pedro/Workspace/backend-stresser/node_modules/engine.io-client/lib/transport.js:64:13)
at Request.<anonymous> (/Users/pedro/Workspace/backend-stresser/node_modules/engine.io-client/lib/transports/polling-xhr.js:128:10)
at Request.Emitter.emit (/Users/pedro/Workspace/backend-stresser/node_modules/component-emitter/index.js:133:20)
at Request.onError (/Users/pedro/Workspace/backend-stresser/node_modules/engine.io-client/lib/transports/polling-xhr.js:310:8)
at Timeout._onTimeout (/Users/pedro/Workspace/backend-stresser/node_modules/engine.io-client/lib/transports/polling-xhr.js:257:18)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5) type: 'TransportError', description: 503 }
有了这些信息后,我快速搜索并找到了解决这个问题的方法,这似乎是一个错误:
我现在使用的代码是:
const socket = io.connect("https://my.website.com:3002", { secure: true, reconnect: true, rejectUnauthorized: false });
它按预期工作。
答案 1 :(得分:0)
我在我的客户端使用了这个代码并且它有效:
import io from "socket.io-client"
const SERVER = "http://localhost:5000"
const socket = io(SERVER, { transports: ["websocket"] })