这是一个创建于 4294 天前的主题,其中的信息可能已经有所发展或是发生改变。
现在有个程序处理流程如下:
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关键字都不会,:(
6 条回复 • 1970-01-01 08:00:00 +08:00
 |
|
1
ForgotFun 2013-06-06 11:00:22 +08:00
想要主动发数据给客户端,那你必须保持着条连接不断开。不然你得用UDP打洞了。
|
 |
|
2
ywu 2013-06-06 11:06:45 +08:00
|
 |
|
3
lookhi 2013-06-06 11:07:10 +08:00
都是C/S了。 让C那边发了后就不管,间隔一段时间来检查下发后的处理情况。 S这边提供一个Query借口就好了。 不用长链接了
|
 |
|
4
ForgotFun 2013-06-06 11:14:16 +08:00
@ lookhi 我倒是不认为,你用查询模式,很多时候数据交换很麻烦。又会涉及到进程间的通信问题了。
|
 |
|
5
zieglar 2013-06-06 11:20:02 +08:00
mq配合socketio呗
|
 |
|
6
phpuser 2013-06-10 13:38:18 +08:00
谢谢各位,最后在各种事件定义后面加了个Timer,暂时满足要求。
|