gpt4 book ai didi

ios - 接收 web 套接字不能在 objective-c 中使用 socket.io 库

转载 作者:行者123 更新时间:2023-11-29 00:01:12 26 4
gpt4 key购买 nike

我在 objective c 中使用 objective library,下面的代码可以很好地向服务器发出套接字,但它没有接收到从服务器发出的套接字。

Android 客户端使用相同格式的代码工作正常,所以我不认为错误与套接字命名有关。我只有“套接字打开”功能有问题。

Objective-C 客户端

NSURL* url = [[NSURL alloc] initWithString:@"http://192.168.0.109:3000"];
[socket on:@"connection" callback:^(NSArray* data, SocketAckEmitter* ack) {
NSLog(@"socket connected");
// [socket emit:@"setUsername" with:typea];
// [socket emit:@"setUsername" with:@[@"test"]];
// [manager emitAll:@"setUsername" withItems:@[@"tulasi"]];
[manager emitAll:@"join_user" withItems:[SharedData sharedConstants].commonuserid];
NSLog(@"socket connected:%@",[SharedData sharedConstants].commonuserid);
}];

// NSArray * idarray =[NSString stringWithFormat:@"@%@",[SharedData sharedConstants].commonuserid];
// NSLog(@"id array is :%@",idarray);
//
//
//[manager emitAll:@"join_user" withItems:@[@"commonuserid"]];



manager= [[SocketManager alloc] initWithSocketURL:url config:@{@"log": @YES, @"compress": @YES}];



socket = manager.defaultSocket;


[self->socket on:@"my_message" callback:^(NSArray* data, SocketAckEmitter* ack) {
NSLog(@"join=>%@", data.description);
messagestr =[[data valueForKey:@"message"]objectAtIndex:0];
// NSString * names =[[data valueForKey:@"userfrom"]objectAtIndex:0];

NSLog(@"receive response is:%@",messagestr);

[chatarray addObject:messagestr];

[typearr addObject:@"b"];
NSLog(@"left array is:%@",chatarray);
NSLog(@"type array is:%@",typearr);



}];



[socket on:@"my_message" callback:^(NSArray * _Nonnull arrayData, SocketAckEmitter * _Nonnull ack) {

//NSLog(@"test:%@", [arrayData description]);
// [self updateTableView];
//double cur = [[arrayData objectAtIndex:0] floatValue];
messagestr =[[arrayData valueForKey:@"message"]objectAtIndex:0];
// NSString * names =[[arrayData valueForKey:@"userfrom"]objectAtIndex:0];

NSLog(@"receive response message is:%@",messagestr);
// NSLog(@"receive response name is :%@",names);


[chatarray addObject:messagestr];

[typearr addObject:@"b"];
NSLog(@"left array is:%@",chatarray);
NSLog(@"type array is:%@",typearr);

//message

//typing

[self updateTableView];

}];
NSLog(@"didReceiveEvent()");


[self->socket connect];

最佳答案

假设您创建了一个名为 socket 的 SocketIOClient 对象 -

NSString *socketPath = @"http://192.168.0.109:3000";

NSURL* url = [[NSURL alloc] initWithString:socketPath];

if (! _socket) {
NSLog(@"Creating new socket");
_socket = [[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @NO, @"forcePolling": @YES}];
} else {
NSLog(@"Using existing socket");
}

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

[_socket on:@"disconnect" callback:^(NSArray* data, SocketAckEmitter* ack) {
_socket = nil;
NSLog(@"socket killed");
}];

[_socket on:@"error" callback:^(NSArray* data, SocketAckEmitter* ack) {
NSLog(@"ERROR with socket %@", data);
}];

[_socket on:@"some message" callback:^(NSArray* data, SocketAckEmitter* ack) {
NSLog(@"Some message arrived with data: %@", data);
}];

用“connect”而不是“connection”检查你的听力。

如果不是这样,也许可以发布您的错误消息。另外,你的 NSLog(@"didReceiveEvent()");在 block 外,所以它总是会被调用。

关于ios - 接收 web 套接字不能在 objective-c 中使用 socket.io 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com