function socketClient(){ var io = require('socket.io-client'); var socket = io.connect('127.0.0.1:5555'); socket.on('connect', function(){ console.log('connect'); }); }
socketClient(); //代码段.... socketClient();
第一次调 socketClient 方法可以联通服务器socket,第二次调就没办法了。为什么啊? 哪位小伙伴在 node.j s用过 socket.io-client,求解答。 求小伙伴们试一试,跪谢。。。
回复 (11)
Socket.IO 链接成功以后应该一直保持连接的, 现在的代码第一次调用的时候把端口占用了, 第二次应该是无效的
- websocket是长连接,
- 好像是规范,一个页面只能打开一个socket。
你可以参考,下面文章学习! http://blog.fens.me/nodejs-socketio-chat/
谢谢解答。 socket一值保持连接,但客户端与服务器的通信是不定时进行的,比如客户端与服务器半个月才通信一次。这样的话,socket一直保持连接不是很浪费资源吗?
你如果还想继续连接,那么socket.disconnect()后再进行重新connect
@c060604 的确浪费资源, 我觉得半个月一次, HTTP 请求就好了, 为什么用 WebSocket 呢?
我也遇到相同的问题了,结果很简单, io.connect(url, options) 这个options有一个参数force new connection,默认为false,只要设置为true就能连接上去了。
参考: https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO
@c060604 我用websocket都是秒级的更新
@jiyinyiyong node.js的net.socket会不会也有这种端口占用的问题?
@c060604 求助 @bsspirit ... 关于 TCP 解释不清 退一步说, 只有在需要的时候建立一次链接, 这样开销就很小了.
这个问题似乎没有什么意义啊,因为和服务器连接一次后,就会一直处于打开状态,而且socket.io会处理心跳包这些东西。你刷新浏览器,关闭浏览器,在地址栏中输入另一个url,都会让连接着的socket与服务器断开,这种情况下才次连接才是一个新的会话,两次调用connect的意义何在呢?