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 django nginx webssh
Rails 中的 WebSockets:在使用 websockets 时,我们是不是必须在现有应用程序中创建一个新的 WebSocketController?