2014-04-07 43 views
3

我必须为移动设备构建一个跨平台的网络应用程序,所以我使用html,css和js(然后它会通过phonegap或cordova)来开发它。使用Socket.io连接到特定的服务器IP

我的问题正在与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的正确逻辑。

回答

5

当您部署应用程序并且设备将连接到服务器主机名或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地址,以使其工作。

+0

非常感谢您的回答。我现在的问题是客户端无法加载socket.io库。我在1.2.3.4:1234上启动了一个服务器,当我连接到这个地址(我的index.html托管在Xammp htdocs文件夹中)时,控制台向我显示了这个错误“GET http://1.2.3.4:1234/socket。 io/socket.io.js“。为什么? –

+2

你使用什么Express版本? API已从Express 2.x更改为3.x,因此答案位于从2.x迁移到3.x wiki的Socket.IO兼容性部分: Socket.IO的.listen()方法将http.Server实例作为参数。 从3.x开始,express()的返回值不是http.Server实例。要使Socket.IO与Express 3.x一起工作,请确保手动创建并将http.Server实例传递给Socket.IO的.listen()方法。 –

相关问题