【问题标题】:Socket iOS swift client in objective-c projet : join roomObjective-C项目中的Socket iOS swift客户端:加入房间
【发布时间】:2016-05-23 00:58:32
【问题描述】:

我在目标 c 客户端中使用 Socket IO swift client,但我无法加入特定房间,因为要加入房间我需要传递房间 ID:

 /**
 * join room
 *
 * @on   -> 'join'
 *
 * @access  -> user
 *
 * @param   ->
 *          |room      {messagingId}
 *
 * @emit  -> {status:, message}
 */

我找到的是:

  [socket on:@"join" callback:^(NSArray* data, SocketAckEmitter* ack) {
    NSLog(@"join=>%@", data);
  }];

我的问题是如何将messaginID 作为参数传递?

谢谢。

【问题讨论】:

    标签: ios objective-c swift socket.io


    【解决方案1】:

    首先,让事情变得清晰的一点描述

    /** 为事件添加监听器。 返回:处理程序的唯一 ID */

     public func on(event: String, callback: NormalCallback) -> NSUUID
    

    /** 向服务器发送消息 */

    public func emit(event: String, _ items: AnyObject...)
    

    回答您的问题

    on(event: String, callback: NormalCallback) -> 你使用的 NSUUID 方法只会让你从服务器得到响应,发送数据使用下面的代码

    所以你需要使用emit来加入房间

    [socket emit: @"join", messaginID];
    

    【讨论】:

      【解决方案2】:

      //////*********SocketIO********///////

      NSString     *User      = FORMAT(@"user_%@",[USERDEFAULT objectForKey:useridkey]);
      NSDictionary *param     = @{@"id": User};
      
      NSData  *data = [NSJSONSerialization dataWithJSONObject:param options:NSJSONWritingPrettyPrinted error:nil];
      NSString *jsonString = [[NSString alloc]initWithData: data
                                                  encoding: NSUTF8StringEncoding];
      
      NSURL* url = [[NSURL alloc] initWithString:CHAT_URL];
      
      socket = [[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @NO, @"reconnectAttempts" : @50, @"reconnects" : @YES, @"forcePolling": @YES}];
      
      //******* connect socket *******////
      [socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
          NSLog(@"socket connected");
          [socket emit:@"join" with:@[jsonString]];
      }];
      
      
      
      ////******* For receive events *******////
      [socket on:@"message" callback:^(NSArray * _Nonnull arrayData, SocketAckEmitter * _Nonnull ack) {
          NSLog(@"%@", [arrayData description]);
      
          NSString *other_userid = FORMAT(@"%@",[[arrayData valueForKey:@"r_id"] objectAtIndex:0]);
          NSString *senderid = FORMAT(@"%@",[[arrayData valueForKey:@"s_id"] objectAtIndex:0]);
          NSString *classified_id = FORMAT(@"%@",[[arrayData valueForKey:@"classified_id"]objectAtIndex:0]);
          NSString *time = FORMAT(@"%@",[[arrayData valueForKey:@"time"]objectAtIndex:0]);
          NSDictionary *temp;
      
          if([classified_id isEqualToString:_classifiedid] && [other_userid isEqualToString:FORMAT(@"user_%@",selfuser.idstring)]) {
      
              NSString *message = FORMAT(@"%@",[[arrayData valueForKey:@"msg"]objectAtIndex:0]);
      
              temp = @{
                       @"msg":message,
                       @"time":time,
                       @"s_id":senderid,
                       @"r_id":other_userid
                       };
      
              [self addChatObjectToChatArray:temp];
      
          }
      
      }];
      
      
      [socket on:@"error" callback:^(NSArray * _Nonnull arrayData, SocketAckEmitter * _Nonnull ack) {
          NSLog(@"error with -- %@ && ACK -- %@", [arrayData description], [ack debugDescription]);
      }];
      
      
      [socket setReconnects:YES];
      [socket connect];
      

      【讨论】:

        猜你喜欢
        • 2014-08-11
        • 1970-01-01
        • 2012-06-06
        • 2020-07-01
        • 2023-04-10
        • 1970-01-01
        • 2013-08-08
        • 1970-01-01
        • 2012-05-21
        相关资源
        最近更新 更多