Websocket服务器运行正常但无法从客户端连接(我应该使用哪个URL?)

时间:2014-04-30 09:18:17

标签: node.js websocket

对于使用 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服务器报告以下错误。 客户未请求指定的协议。

2 个答案:

答案 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)此处提供的示例代码却没有。这个问题很容易避免。