socket.on方法在从服务器获取消息时不调用

时间:2016-06-07 08:47:50

标签: ios objective-c sockets

我正在进行套接字编程,我是socket的新手。我被困。我能够轻松地在服务器上发送消息,但无法从服务器获取消息。这可能意味着我的socket.on()方法无法正常工作。 我的套接字连接代码是

-(void)socketSession
{
    NSString *strURl = [NSString stringWithFormat:URl];
    NSURL* url = [[NSURL alloc] initWithString:strURl];

        socket = [[SocketIOClient alloc] initWithSocketURL:url options:@{@"log": @YES, @"forcePolling": @YES}];
    [socket connect];
    [self recieveServerMessage];


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


      }];

}

我在viewController类的viewDidLoad上调用此方法,recieveServermessage方法是

-(void)recieveServerMessage{

    NSLog(@"receiving...message...");


    [socket on:@"chat" callback:^(NSArray* data, SocketAckEmitter* ack) {
        NSLog(@"recieveMessage");

    }];

}

当服务器发送消息时,我的控件不会出现。 以下格式由Web服务器客户端

提供
socket.on(":chat", function(data) {
// fired when any chat message is raised
// data.to_id = my _id. Please verify this before processing the packet
// data.sender_id = sender's _id. Map against counsellor list API or /api/getUserName?_id=(user's _id)
// data.msg = text message sent by the sender
})

现在请指导我。过去两天我一直坚持这一点。 感谢

2 个答案:

答案 0 :(得分:0)

套接字io javascript类的完整代码会很有帮助。

您需要编写emit函数来从服务器向客户端发送消息。像:

sockets.emit('chat', message);

从客户端到服务器:

[socket emit:@"chat" withItems:@[@"message", @"other data"]];

答案 1 :(得分:0)

我找到了解决方案。主要问题在于套接字握手。现在我正在使用

 NSURL* url = [[NSURL alloc] initWithString:@"https://unbottle.me"];

socket =  [[SocketIOClient alloc] initWithSocketURL:url
                                            options:@{@"connectParams" : @{@"_id": userID,@"isCounsellor": @NO,@"counsellor_id": counsellorID}}];

之前我没有在字典中使用@“connectParams”键值,所以我遇到了这个问题。 感谢