最近在用nodejs+socket.io做聊天室,一开始用的socket.io客户端版本是0.8.4,发现客户端是用xhr-polling进行通信,而且在chrome下连接需要很长时间。于是想把socket.io客户端升级到0.9+,下载了0.9.6的客户端js,发现有跨域错误,百思不得其解,在网上找过很多答案,没有一个能解决这个问题。

后来萌生了一个把服务端和客户端都升级到0.9+的想法。升级之后,问题解决。

其实0.8+和0.9+的差别还是蛮大的,从文件结构到代码都有不小的调整,之前的跨域问题估计和这个也有关系。

我现在用的服务端socket.io是0.9.5 客户端是0.9.6,在用npm安装socket.io的时候,会自动安装policyfile、redis、socket.io-client 这个三个包,也就是说,不用另外安装socket.io-client模块了,而且在启动服务后可以通过相对路径获取socket.io.js文件,如:http://localhost:8000/socket.io/socket.io.js

升级之后还是好处多多的,在chrome下已经能用websocket进行通信了,连接速度也提升了数倍,HOHO~