连接到HTML5 Websocket

时间:2013-01-28 01:30:36

标签: html5 websocket

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

例如,

Adobe使用:

new WebSocket('ws://localhost:1740');

然后另一个tutorial有这个没有端口的地方:

new WebSocket("ws://www.websockets.org");

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

new WebSocket("ws://localhost:8080/echo");

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

var ws = new WebSocket("ws://test.ontarget-network.com/");

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

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

ws.onopen = function(){
   alert("Connection Established");
};

不会执行。

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

4 个答案:

答案 0 :(得分:12)

以下内容来自latest WebSocket draft

  

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

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

关于港口的快速说明:
- 端口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并没有指向有效的服务器端脚本,但如果没有更多的话,很难评论资讯

答案 1 :(得分:12)

服务器应该有一个接受WebSocket连接的端点。因此,如果该端点为/echo,您可能希望连接到:

ws://localhost:8080/echo/websocket

如果在端点后排除Unexpected response code: 200后缀,则会出现/websocket错误。我有同样的困惑,this link为我清理了一些事情。

答案 2 :(得分:0)

我有同样的问题,但要与

生存
Unexpected response code: 200

您需要使用服务器端脚本来处理Web套接字,或者您可以使用 Node.js 来构建您的服务器脚本。 为了教育,您可以尝试使用自己的websocket服务器脚本。

答案 3 :(得分:-8)

实际上还有其他东西......由于每个浏览器都有阻塞端口列表,因此无法打开与每个端口的连接。我记得在Michal Zalewski的“纠结的网络”中看到了完整的端口列表;但是,我认为快速谷歌也会显示这一点。