没有http服务器的Socket.IO?

我目前正在与Socket.IO来回nodejs共享服务器和一些客户端之间的一些实时信息。 客户端只能与服务器通信,而不能与对方通信。

在Windows上一切都很好,我可以共享信息,但是因为它把事情放到一个linux vps上,所以我得到了一个问题,他启动了一个ipv6套接字,这使得我很难从socket连接到客户端浏览器库。 IO

我像这样启动服务器:

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

这工作得很好,我可以连接。 现在在Linux的VPS我试图通过使用这样的ipv4地址防止ipv6

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

但是这不起作用,不是在Linux上,而不是在Windows上。 他没有绑定套接字的IP我想要它,除非我使用http服务器是这样的:

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

现在我的问题是,我必须使用http服务器来解决绑定套接字到正确的本地IP和端口的问题还是有任何其他的解决scheme吗? 而且,在我的第一行代码中,socketio在后台启动了一个http服务器,因为它是一个web套接字,还是socketio在没有http服务器的情况下工作?

非常感谢你 :)

一般而言,Socket.io和WebSocket需要一个用于初始握手的http服务器。 所以即使你不提供一个http服务器的Socket.io,它也会为你创build一个。

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