请问,服务器主动往客户端发包如何实现?

2013-06-06 10:43:02 +08:00
 phpuser
现在有个程序处理流程如下:
1.Client 发包A到 Server
2.Server预处理(入库,入队列等),返回B
3.后台进程,处理队列中的数据,
4.Server定时队列中查早已经处理完的数据主动发C包给Client,通知结果。

其中C/S非常繁忙。

Q:

1.在什么位置放置 Server 主动发包的逻辑,什么方式实现?保存所有连接Timer外,还有什么方法?
2.处理发送C包的时候会否阻塞其他处理逻辑?
3.(如果不存在2)是否可能造成包混乱是 -- Server同时发B和C,在Client中接收是否会有问题


另外,我了解了下node是单线程的,那么同时收到多个连接的包时,是不是只能顺序一个个处理完再下一个?如果每个包处理时间很长那么不是造成处理能力低下?
(以前C写这些东西select后一般fork一个新进程处理)

Node.js新手,请指教,谢谢。
..早上发现以上问题如何找google关键字都不会,:(
4475 次点击
所在节点    Node.js
6 条回复
ForgotFun
2013-06-06 11:00:22 +08:00
想要主动发数据给客户端,那你必须保持着条连接不断开。不然你得用UDP打洞了。
ywu
2013-06-06 11:06:45 +08:00
lookhi
2013-06-06 11:07:10 +08:00
都是C/S了。
让C那边发了后就不管,间隔一段时间来检查下发后的处理情况。
S这边提供一个Query借口就好了。
不用长链接了
ForgotFun
2013-06-06 11:14:16 +08:00
@lookhi 我倒是不认为,你用查询模式,很多时候数据交换很麻烦。又会涉及到进程间的通信问题了。
zieglar
2013-06-06 11:20:02 +08:00
mq配合socketio呗
phpuser
2013-06-10 13:38:18 +08:00
谢谢各位,最后在各种事件定义后面加了个Timer,暂时满足要求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71428

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX