连接到HTML5 Websocket

Maj*_*0od 13 html5 websocket

我对HTML5 Websockets有点困惑.我看了很多教程,其中很多都有不同的连接使用不同的端口.这些端口是什么意思?

例如,Adobe使用这个:

new WebSocket('ws://localhost:1740');
Run Code Online (Sandbox Code Playgroud)

然后另一个教程有这个没有端口是必需的:

new WebSocket("ws://www.websockets.org");
Run Code Online (Sandbox Code Playgroud)

最后第三个教程有一个端口,但它完全不同:

new WebSocket("ws://localhost:8080/echo");
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么这些会有所不同?我如何知道要连接的端口?此外,我试图建立自己的连接:

var ws = new WebSocket("ws://test.ontarget-network.com/");
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误: Unexpected response code: 200

我已经测试过并尝试连接到其他各种"端口"(不知道我在做什么,输入随机数字)然后这个错误会消失,但是,我的代码

ws.onopen = function(){
   alert("Connection Established");
};
Run Code Online (Sandbox Code Playgroud)

不会执行.

我正在尝试完全理解HTML5的Websockets API,以便我可以尝试和创建更多动态应用程序.谢谢您的帮助.

Har*_*San 12

以下来自最新的WebSocket草案:

默认情况下,WebSocket协议使用端口80进行常规WebSocket连接,使用端口443进行通过TLS [RFC2818]进行隧道传输的WebSocket连接.

实际上,您应该可以使用任何未使用的有效端口.只要客户端尝试连接到服务器端脚本为套接字连接打开的同一端口,您应该没问题.

关于端口的快速说明:
- 端口80是HTTP端口.
- 端口8080是备用HTTP端口.
- 端口443是HTTPS(即带有TLS的HTTP)端口.
- Adob​​e代码中的端口1740看起来像是其他服务尚未使用的随机端口.

有关预设端口的完整列表,请参阅以下内容:http:
//en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

至于你的"意外的响应代码:200"错误,我猜你在客户端使用的WebSocket URL并没有指向有效的服务器端脚本,但是如果没有更多信息则很难评论.


har*_*z89 12

服务器应该有一个接受WebSocket连接的端点.因此,如果该端点是/echo您想要连接到:

ws://localhost:8080/echo/websocket
Run Code Online (Sandbox Code Playgroud)

Unexpected response code: 200如果/websocket在端点后排除后缀,则会收到错误.我有同样的困惑,这个链接为我清理了一些东西.

  • 是的,同样的事情发生在我身上.+1 (2认同)