socket.io为什么不能支持同端口多进程模式?

之前一个问题中说socket.io的服务端运行机制决定每个端口只能开启一个进程。(http://wenda.workerman.net/?/question/882)
能再进一步说明一下 为啥么,它的机制有什么不同的导致一个端口只能开启一个进程?
已邀请:

walkor

赞同来自: justkids chentf

主要是因为多个进程间需要实时同步客户端数据非常困难。数据包括socket.io客户端sid数据、要推送给客户端的数据、业务给socket.io连接对象赋值的动态属性变量等

拿推送数据同步问题举例
1、在浏览器不支持websocket时,socket.io会使用http协议和服务器通讯(socket.io握手时也是http请求)。
2、http协议是请求响应式的,客户端没有发起http请求时,服务端无法主动推送数据给浏览器。
3、如果一个端口多个进程监听,浏览器发起http请求可能会发送到不同的进程。
4、假如服务端要给某个客户端推送数据,此时客户端还没发出http请求,服务端不能直接发送给浏览器
5、这时请求只能在某个进程(假设是A进程)内部缓冲,等待客户端发器http请求
6、假设浏览器发起http请求到B进程,那么会导致A进程的要推送的数据无法推送给浏览器

要回复问题请先登录注册