2015-10-17 44 views
14

我目前正在使用Socket.IO来处理nodejs,以便在服务器和某些客户端之间共享一些实时信息。客户端应该只与服务器通信,而不是彼此通信。没有http服务器的Socket.IO?

在windows上一切都很好,我可以共享信息,但是因为它把东西放到linux vps上,所以我开始在ipv6套接字上启动所有东西,这使我很难连接到客户端浏览器从socket.io

我启动服务器,这样libary:

io = require('socket.io').listen(3000); 

至极工作正常,我可以连接。现在在Linux VPS我试图阻止的IPv6使用的IPv4 ADRESS这样

io = require('socket.io').listen(3000, '0.0.0.0'); 

,但没有工作,而不是在Linux和Windows不支持。他,除非我这样使用HTTP服务器不插座的ip我想将它绑定:

http = require('http').createServer().listen(3000, '0.0.0.0'); 
io = require('socket.io').listen(http); 

现在我的问题就是,我必须使用HTTP服务器来解决的插座结合的问题正确的本地IP和端口还是有其他解决方案?在我的第一行代码中,socketio在后台启动一个http服务器,因为它是一个web套接字,还是socketio在没有http服务器的情况下工作?

非常感谢你:)

回答

20

Socket.io和WebSockets的一般,需要对初始握手HTTP服务器。所以即使你不提供一个http服务器的Socket.io,它也会为你创建一个。

问题是您的io.listen(3000, '0.0.0.0')中的第二个参数被Socket.io忽略。你最好使用最后一个片段,因为它基本上是Socket.io在幕后做的。唯一真正的区别是您可以控制要监听的接口。

+0

非常感谢,这可以帮助我很多+ 1 – Arkensor