关于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客户端如何管理。存在一个全局集合?可能会有内存泄露的风险。
水平有限,表达的可能有问题。不知道老哥们是否明白。小弟再此磕头了,砰砰砰砰!!!望指导
回答
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 通信,还是所有的
以上是 关于node请求在socket通讯中的处理 的全部内容, 来源链接: utcz.com/a/42809.html