gpt4 book ai didi

javascript - 无法连接到 Node js中的websocket

转载 作者:行者123 更新时间:2023-12-03 00:44:36 26 4
gpt4 key购买 nike

我的机器上运行着一个 URL 为“ws://localhost:1122”的 websocket。当我使用普通的 JavaScript 来使用 websocket 并将其部署在 jetty 服务器中时,我能够连接到 websocket。

但是在使用 Node js 时我无法连接到网络套接字。我在这两种情况下都使用以下代码

var socket = new WebSocket(URL);

在使用 Node js 时,我添加了以下 var WebSocket = require("ws")。但在 Node js 中,套接字的 ReadyState 永远不会变为 OPEN。

node js 中是否缺少任何内容,因为在使用 jetty 作为服务器和普通 javascript 时,我能够连接到 websocket。

这是我的 app.js

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(1131, "localhost");
var WebSocket = require("ws");
var wsUri = "ws://localhost:1122";
var socket;
printer();
function printer() {
socket = new WebSocket(wsUri);
console.log(socket.readyState);
}

最佳答案

由于 Node.js 的异步特性,socket.readyState 不会立即反射(reflect)连接的状态。

相反,您应该使用事件发射器接口(interface)来检查是否/何时建立连接:

socket = new WebSocket(wsUri);
socket.on('open', function() {
console.log('connection opened');
}).on('close', function() {
console.log('connection closed');
}).on('error', function(e) {
console.log('connection error', e);
});

关于javascript - 无法连接到 Node js中的websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301039/

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