无法在客户端和服务器上使用socket.io连接到服务器

时间:2016-01-11 16:11:10

标签: ios node.js swift sockets socket.io

我刚开始使用socket.io为我的客户端和Node.js服务器端构建服务器。

我正在编写一个Objective-c项目,所以我逐步调整我的项目以使用SwiftObjective-c一起使用,这很痛苦,但现在似乎还可以。

问题是,当我尝试对我的服务器进行简单连接时,打印以登录每个连接,没有任何反应。

这是服务器的代码(取自here):

var fs = require('fs')
    , http = require('http')
    , socketio = require('socket.io');

var server = http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-type': 'text/html'});
}).listen(8080, function() {
    console.log('Listening at: http://localhost:8080');
});

socketio.listen(server).on('connection', function (socket) {
    console.log('Connected');
    socket.on('message', function (msg) {
        console.log('Message Received: ', msg);
        socket.broadcast.emit('message', msg);
    });
});

超级简单,真的没什么。

我的客户端的Objective-c代码更简单:

- (void) connect
{
    SocketIOClient* client = [[SocketIOClient alloc]initWithSocketURL:@"http://127.0.0.1:8080/" options:nil];
    [client connect];
}

但除了Listening at: http://localhost:8080消息外,我在控制台上看不到任何内容。

我似乎无法找到我在这里做错了什么,而且这个组合项目中的快速调试很糟糕,我无法完全通过socket.io调试自己(但是我很确定他们的代码没什么问题)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您使用模拟器进行iOS测试,请确认。对于设备,您需要为NodeJS服务器分配公共地址,然后需要在iOS Codebase中使用它的ip。

我在上一个项目中使用了https://github.com/pkyeck/socket.IO-objc,它就像一个魅力。

对于模拟器,理想情况下您的代码应该可以工作。