Node.js 如何响应升级请求?
Posted
技术标签:
【中文标题】Node.js 如何响应升级请求?【英文标题】:Node.js how to respond to an upgrade request? 【发布时间】:2013-08-05 09:41:43 【问题描述】:我正在处理来自 Node.js http 服务器的 websocket 'upgrade' 事件 - 升级处理程序的形式为 function(req, socket, head) - 如果存在,我如何发送对此升级请求的响应没有 res 对象吗?有没有办法使用套接字对象来做到这一点?如何发回标头?
【问题讨论】:
你为什么使用http服务器来做websockets?有plenty of dedicated libraries。是的,你应该通过套接字来回答。 我正在为 engine.io 编写一个自定义代理。 node-http-proxy 库(由 Noejitsu 提供)似乎不适用于 engine.io - 我只想让基本逻辑在这个阶段正常工作。 【参考方案1】:您只需要使用适当的 HTTP 语法以纯文本形式调用 socket.write
(来自***):
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
使用\r\n
行分隔符。在那之后,HTTP 结束了,现在您只使用裸 TCP 套接字。
【讨论】:
以上是关于Node.js 如何响应升级请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何发送 POST 请求以响应 node.js Express?
如何在node.js服务器流式http请求中处理JSON流响应数组
如何在 node.js + Express 中同时支持 json 和 jsonp 响应?