我正在进行套接字编程,我是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
})
现在请指导我。过去两天我一直坚持这一点。 感谢
答案 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”键值,所以我遇到了这个问题。 感谢