对于使用 websocket 和 nodejs 的人来说,这很简单。 我创建了一个名为 ws_server.js 的websocket服务器,并将其放在 C:\ Program Files(x86)\ nodejs 中,我已经安装了nodejs框架。我启动了服务器,它正在运行,它说它正在侦听端口8080.到目前为止,我已经运行了服务器。
现在我只想从客户端代码连接到它,以便我可以使用事件监听器等来捕获事件的所有可爱的东西。问题是,令人尴尬的是,我无法弄清楚用于连接到我的websocket的URL服务器
function init() {
testWebSocket();
}
function testWebSocket() {
websocket = new WebSocket("ws://localhost:8080/"); // WHAT URL SHOULD BE USED HERE?
websocket.onopen = function(evt) { alert("OPEN") };
websocket.onclose = function(evt) { alert("CLOSE") };
websocket.onmessage = function(evt) { alert("MESSAGE") };
websocket.onerror = function(evt) { alert("ERROR") };
}
function doSend(message) {
// this would be called by user pressing a button somewhere
websocket.send(message);
alert("SENT");
}
window.addEventListener("load", init, false);
当我使用ws:// localhost:8080时,触发的唯一事件是CLOSE和ERROR。我无法让客户端连接。我必须错过一些非常简单的事情。例如,我是否需要在IIS中设置我的nodejs文件夹,然后将其用作URL?
重申一下,websocket服务器运行正常,我只是不知道从客户端连接到它的URL是什么。
编辑:websocket服务器报告以下错误。 客户未请求指定的协议。
答案 0 :(得分:13)
我认为我通过以下方式实现了它。
var websocket = new WebSocket("ws://localhost:8080/","echo-protocol");
问题在于我需要指定协议。至少现在我得到了 onopen 事件。 ......如果没有其他的话
答案 1 :(得分:0)
我看到了相同的错误,整个Web服务器都关闭了。添加该协议可以解决该问题,但让我想知道为什么以这种方式实现。我的意思是,一个错误的请求不应关闭您的服务器。
您肯定必须将其包含在try / catch中,但https://www.npmjs.com/package/websocket(2019-08-07)此处提供的示例代码却没有。这个问题很容易避免。