【问题标题】:Connecting to HTML5 Websocket连接到 HTML5 Websocket
【发布时间】:2013-01-28 01:30:36
【问题描述】:

我对 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,以便我可以试验并创建更多动态应用程序。感谢您的帮助。

【问题讨论】:

  • 成功的 WebSocket 连接依赖于来自服务器的带有 HTTP 状态代码 101 的初始响应。其他任何事情都会导致客户端出错。

标签: html websocket


【解决方案1】:

以下来自latest WebSocket draft

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

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

关于端口的快速说明:

  • 端口 80 是 HTTP 端口。
  • 端口 8080 是备用 HTTP 端口。
  • 端口 443 是 HTTPS(即带有 TLS 的 HTTP)端口。
  • Adobe 代码中的端口 1740 似乎是其他服务尚未使用的某个随机端口。

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

至于您的“意外响应代码:200”错误,我猜您在客户端使用的 WebSocket URL 未指向有效的服务器端脚本,但如果没有更多内容,很难评论信息。

【讨论】:

    【解决方案2】:

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

    ws://localhost:8080/echo/websocket
    

    如果您在端点后排除/websocket 后缀,您将收到Unexpected response code: 200 错误。我也有同样的困惑,this link 为我解决了一些问题。

    【讨论】:

    • 是的,同样的事情发生在我身上。 +1
    • 这个人救了我的命。我花了几个小时弄清楚发生了什么。
    • 我同样的问题 +1
    • 对我来说也一样。但我想知道这是否是一些标准?当我编写服务器端代码时,我从来没有看到任何提及这个
    【解决方案3】:

    我有同样的问题,但为了生存

    Unexpected response code: 200
    

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 这只是错误!但是,如果您位于公司防火墙后面,则可以阻止端口。通常认为情况并非如此。如果您可以访问任何网页,websockets 应该可以正常工作!
      • 其实他是对的(虽然也无关紧要)。请看www-archive.mozilla.org/projects/netlib/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2013-03-01
      • 2015-10-04
      • 2017-06-21
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多