关于node请求在socket通讯中的处理
先上个图
如图,前端请求后,后端node通过socket到客户端获取数据在返回到服务端。
列子: 1.前端get请求:/index
2.node express 设置路由 router.get(/index, (req, res) => { … 到这里需要通过socket到客户端获取数据, socket.write(XXX) })
问题:
1.当客户端通过socket返回数据到服务端时,如何把数据返回到前台。正常的返回到前端的操作如res.json(xxx)等。但当客户端通过socket传输数据时是在socket.on(‘data’, function (data)这个事件中接收,此时的上下文环境并无res对象。如吧res存在全局可res.json(xxx)返回。
2.多个socket客户端如何管理。存在一个全局集合?可能会有内存泄露的风险。
水平有限,表达的可能有问题。不知道老哥们是否明白。小弟再此磕头了,砰砰砰砰!!!望指导
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
socket
的目标, 称为服务端, 更加好理解一些吧...按照我的理解, 应该是, 每一个请求
/index
, 都通过一个函数, 返回一个Promise
, 其中新建一个socket
连接, 然后写入数据, 等接收完了resolve
.如果你是保持一个长连接, 那就需要自己维护一个
socket
池吧. 但是感觉没啥必要...你要的不是某种形式的RPC么,找个现成的实现就好了。
再者从你的描述中看不需要多个socket客户端啊
你的图和你的描述貌似对不上,终端请求你的http server, http server与另外的socket server通信对吗
那么你的http server中只要有一个 socket client就行了。如果要区分终端可以通信的时候带上session id嘛
PS:抱歉我没看仔细,你的情况是 web 与 socket 两个终端对吧,如果是这样你有一个关键的逻辑没讲,web请求过来后是与哪一个socket client 通信,还是所有的
写个小demo供参考,思路就是把tcp通信也像http一样配对起来: