我必须为移动设备构建一个跨平台的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的正确逻辑。
答案 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地址,以实现此目的。