node.js 使用 socket.io-client
发布于 1年前 作者 c060604 4663 次浏览

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 链接成功以后应该一直保持连接的, 现在的代码第一次调用的时候把端口占用了, 第二次应该是无效的

  1. websocket是长连接,
  2. 好像是规范,一个页面只能打开一个socket。

你可以参考,下面文章学习! http://blog.fens.me/nodejs-socketio-chat/

谢谢解答。 socket一值保持连接,但客户端与服务器的通信是不定时进行的,比如客户端与服务器半个月才通信一次。这样的话,socket一直保持连接不是很浪费资源吗?

你如果还想继续连接,那么socket.disconnect()后再进行重新connect

@c060604 的确浪费资源, 我觉得半个月一次, HTTP 请求就好了, 为什么用 WebSocket 呢?

@c060604 我用websocket都是秒级的更新

@jiyinyiyong node.js的net.socket会不会也有这种端口占用的问题?

@c060604 求助 @bsspirit … 关于 TCP 解释不清 退一步说, 只有在需要的时候建立一次链接, 这样开销就很小了.

我也遇到相同的问题了,结果很简单, io.connect(url, options) 这个options有一个参数force new connection,默认为false,只要设置为true就能连接上去了。

参考: https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

这个问题似乎没有什么意义啊,因为和服务器连接一次后,就会一直处于打开状态,而且socket.io会处理心跳包这些东西。你刷新浏览器,关闭浏览器,在地址栏中输入另一个url,都会让连接着的socket与服务器断开,这种情况下才次连接才是一个新的会话,两次调用connect的意义何在呢?

回到顶部