Websockets:命名服务器的含义?

Posted

技术标签:

【中文标题】Websockets:命名服务器的含义?【英文标题】:Websockets: Meaning of named server? 【发布时间】:2011-08-20 16:38:44 【问题描述】:

可以在此处找到解释如何使用 websockets 的典型示例:https://developer.mozilla.org/en/WebSockets/Writing_WebSocket_client_applications。

从那个页面:

这个简单的例子创建了一个新的 WebSocket,连接到服务器 在http://www.example.com/socketserver。它指定了一个协议 “我的自定义协议”。

var mySocket = new WebSocket("http://www.example.com/socketserver", “我的自定义协议”);

我的问题与此 websocket 服务器地址示例中的“socketserver”有关。一个套接字服务器会监听一个端口,对吧?所以,我可以这样理解:

var mySocket = new WebSocket("http://www.example.com:4242", "my-custom-protocol");

这就像与套接字服务器建立连接的任何旧方式一样,例如myGuy.connect(4242);

当没有给出端口号时,浏览器使用什么类型的连接来初始访问上面的“socketserver”?网址连接?什么?

【问题讨论】:

【参考方案1】:

Websocket 协议的开头类似于 HTTP。如果 URL 中未指定端口,则使用默认端口 80。使用 TCP/IP 建立连接。客户端发送的初始字节将包含路径/socketserver,因此主机知道客户端请求的内容。

***有一个 websocket 客户端和 websocket 服务器之间的开放通信示例,您应该查看: http://en.wikipedia.org/wiki/WebSocket#WebSocket_Protocol_Handshake

【讨论】:

我以前看过该信息,但我认为“GET /demo HTTP/1.1”不知何故从我眼前闪过……也许我在看另一部分。这是一个 GET 请求,对吧?那么,他们给出的示例可以由 Servlet 上的 doGet() 处理吗? 一开始它看起来像一个 GET 请求,这是我能说的最多的。我也不知道 servlet 是什么。 时间已经过去了。我现在比以前更了解它。只是以为我会回来……是的……它是作为http请求进来的。请求是升级到 websocket。我现在可以添加 HttpExchange 将失败,因为它在响应后关闭连接(承诺它将升级连接)。 我是否成功回答了您最初的问题,即“当未提供端口号时,浏览器使用什么类型的连接来初始访问上述 'socketserver'?” 是的。谢谢你。从那以后,我在这方面取得了很大进展。【参考方案2】:

WebSockets 通过 HTTP 升级请求建立连接。因此,在上述情况下,Web 服务器会将 /socketserver 上的升级请求重新路由到实际的 web 套接字服务器,然后由 WS 协议处理连接。

【讨论】:

对 /socketserver 的引用是否类似于 AJAX 请求中的 url 引用?例如; url = "验证2"; req.onreadystatechange = 回调; req.open("POST", url, true);

以上是关于Websockets:命名服务器的含义?的主要内容,如果未能解决你的问题,请参考以下文章

来自服务器端的 WebSockets 握手回复,草稿 00

WebSockets + PHP(棘轮)登录系统

websockets django nginx webssh

Rails 中的 WebSockets:在使用 websockets 时,我们是不是必须在现有应用程序中创建一个新的 WebSocketController?

EventMachine WebSockets - 订阅 WS 到 EM 频道与保持套接字收集

对 Microsoft WebSockets 命名空间感到困惑