Socket.io实现原理分析
一、如何实现namespace划分?
同一域名下面,不同namespace的socket对象:有一个共同点,就是都在同一个engine对象(websocket封装对象)的事件(open、data)响应函数;有一个不同点,各自socket对象的nsp属性值不同。 然后,每个websocket的数据包(packet),也有nsp属性值。
所以,在响应函数里面,第一句就是判断nsp值,是否与该socket值相同。 相同,则是该socket处理范围; 不相同,不做任何处理。
二、如何共用websocket连接?
这个简单。其实就是Socket类,不直接对外暴露给用户,通过全局io函数。 对同一域,该io函数内部,维系一个Manage对象,它与websocket连接一一对应;Manager对象,维护n个Socket对象。
协议格式参考: https://www.jianshu.com/p/a3e06ec1a3a0