使用Socket.io连接到特定的服务器Ip

时间:2014-04-07 14:20:55

标签: node.js sockets cordova

我必须为移动设备构建一个跨平台的Web应用程序,所以我用html,css和js开发它(然后它将通过phonegap或cordova)。

我的问题是使用socket.io,我的问题是:

1)我可以连接到客户端的特定IP吗?

取而代之的是:

 <script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

我需要这个,但这不起作用:

<script src="my-app/folder/js/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://my.server.ip:port');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

2)在服务器端,如何创建一个侦听其IP上的连接和消息的服务器?

var io = require('socket.io').listen(80, my.server.ip);

通过这种方式,应用程序的用户将连接到我托管聊天服务的服务器Ip。

我想我没有考虑socket.io的正确逻辑。

1 个答案:

答案 0 :(得分:8)

部署应用程序时,您将不会连接到localhost,并且设备将连接到服务器主机名或IP地址。

服务器上的以下代码将在与指定端口上的服务器关联的IP地址上运行socket.io,前提是该服务器可通过该IP地址访问

var io = require('socket.io');
var server = http.createServer();
server.listen(port, ipAddress);
var socket = io.listen(server);

以下代码应该在客户端正常工作

var socket = new io.Socket();
socket.connect('http://' + ipAddress + ':' + port);

确保您能够从客户端设备通过网络连接到IP地址,以实现此目的。