Node.js socket.io没有响应iOS socket.io发出请求

时间:2015-10-14 06:47:08

标签: ios node.js socket.io

我似乎无法想出这个。我正在测试socket.io的用法,以便将iOS客户端应用程序与Node.js服务器连接起来。我的服务器代码如下所示:

var io = SocketIO(8099, { log: true });

io.on('connection', function (socket) {

    socket.on('connect', function (data) {
            console.log('Connected, data: ' + data);
        });

    socket.on('getProjects', function(from, msg) {
        database.allProjects(function getAllProjectsCallback(err, rows) {
            console.log('Got the project list');
            socket.emit('projectList', rows);
        });
    });

});

我的iOS代码以:

开头
_socket = [[SocketIOClient alloc] initWithSocketURL:@"http://localhost:8099" opts:nil];

    [_socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
        NSLog(@"socket connected");
    }];

    [_socket on:@"projectList" callback:^(NSArray* data, SocketAckEmitter* ack) {
        NSLog(@"Project list received");
        [ack with:@[]];
    }];

    [_socket connect];

在另一种方法中我有这个代码应该发送get projects请求:

[_socket emit:@"getProjects" withItems:@[]];

我可以在日志中看到iOS“套接字连接”消息。但不是Node.js“已连接,...”消息。当我在iOS中触发[_socket emit:@"getProjects" ...]时,服务器上没有任何反应。既没有调用'connect'或'getProjects'事件。

我已经控制了互联网,据我所知,我已经按照我能找到的所有博客和示例完成了所有工作。

我在此设置中缺少什么?或者我从根本上错过了什么?

2 个答案:

答案 0 :(得分:0)

我对iOS代码一无所知。但是我在服务器代码中发现了一些错误。

 socket.on('connect', function (data) {
        console.log('Connected, data: ' + data);
 });

上面的代码表示当有人将数据发送到套接字名称“connect”时,它会将console.log发送给该数据。

我认为这就是你的代码应该是什么样的。

var io = SocketIO(8099, { log: true });

io.on('connection', function(socket) {
    console.log('New Connection');
    socket.on('getProjects', function(data) {
        database.allProjects(function getAllProjectsCallback(err,  rows) {
            console.log('Got the project list');
            socket.emit('projectList', rows);
        });
    });
});

答案 1 :(得分:0)

刚才意识到这完全是我的坏事。我有时间错误,因为我正在使用不同的通信模型的代码进行重构。我的代码设法在创建套接字之后但在它准备好发送数据之前执行emit。

现在一切正常。感谢。