Skip to content
This repository has been archived by the owner on Jan 31, 2023. It is now read-only.

3.3.相手から着信

hkato edited this page Mar 28, 2016 · 3 revisions

相手からのテキストチャット着信時の処理

  • シグナリングサーバ経由でテキストチャット着信があった場合の処理
    • 相手とのP2Pコネクションで発生するイベントのコールバックを登録

Java

// コールバックを登録(CONNECTION)
_peer.on(Peer.PeerEventEnum.CONNECTION, new OnCallback(){
  @Override
  public void onCallback(Object object){
    _data = (DataConnection) object;
    setDataCallback(_data);
    _bEstablished = true;
    updateUI();
  }
});

Objective-C

//コールバックを登録(CONNECTION)
[_peer on:SKW_PEER_EVENT_CONNECTION callback:^(NSObject* obj)
{
   _data = (SKWDataConnection *)obj;
   [self setDataCallback:_data];
    _bEstablished = YES;
   [self updateUI];
}];

Swift

//コールバックを登録(CONNECTION)
_peer?.on(SKWPeerEventEnum.PEER_EVENT_CONNECTION, callback: { (obj:NSObject!) -> Void in
   self._data = obj as? SKWDataConnection
   self.setDataCallbacks(self._data!)
   self._bEstablished = true
   self.updateUI()
})

P2Pコネクションのコールバック処理

  • データを受信した場合(DATA)、UIに表示
  • コネクションが切断された場合(CLOSE)、UIに表示

Java

private void setDataCallback(DataConnection data){
  // コールバックを登録(チャンネルOPEN)
  data.on(DataConnection.DataEventEnum.OPEN, new OnCallback(){
    @Override
    public void onCallback(Object object){
      addLog("system","DataConnection opened");
      _bEstablished = true;
      updateUI();
    }
  });

  // コールバックを登録(データを受信)
  data.on(DataConnection.DataEventEnum.DATA, new OnCallback() {
    @Override
    public void onCallback(Object object) {
      String strValue = (String) object;
      addLog("Partner", strValue);
    }
  });

  // コールバックを登録(チャンネルCLOSE)
  data.on(DataConnection.DataEventEnum.CLOSE, new OnCallback() {
    @Override
    public void onCallback(Object object) {
      _data = null;
      _bEstablished = false;
      updateUI();
      addLog("system", "DataConnection closed");
    }
  });
}

Objective-C

- (void)setDataCallback:(SKWDataConnection *)data
{
    //コールバックを登録(チャンネルOPEN)
    [data on:SKW_DATACONNECTION_EVENT_OPEN callback:^(NSObject* obj)
     {
         [self appendLogWithHead:@"system" value:@"DataConnection opened."];
         _bEstablished = YES;
         [self updateUI];
     }];

    // コールバックを登録(データを受信)
    [data on:SKW_DATACONNECTION_EVENT_DATA callback:^(NSObject* obj)
     {
         NSString* strValue = (NSString*)obj;
         [self appendLogWithHead:@"Partner" value:strValue];

     }];

    // コールバックを登録(チャンネルOCLOSE)
    [data on:SKW_DATACONNECTION_EVENT_CLOSE callback:^(NSObject* obj)
     {
         _data = nil;
         _bEstablished = NO;
         [self updateUI];
         [self appendLogWithHead:@"system" value:@"DataConnection closed."];
     }];
}

Swift

func setDataCallbacks(data:SKWDataConnection){
    
    //コールバックを登録(チャンネルOPEN)
    data.on(SKWDataConnectionEventEnum.DATACONNECTION_EVENT_OPEN, callback: { (obj:NSObject!) -> Void in
        self.appendLogWithHead("system", value: "DataConnection opened")
        self._bEstablished = true;
        self.updateUI();
    })
    
    // コールバックを登録(データを受信)
    data.on(SKWDataConnectionEventEnum.DATACONNECTION_EVENT_DATA, callback: { (obj:NSObject!) -> Void in
        let strValue:String = obj as! String
        self.appendLogWithHead("Partner", value: strValue)

    })
    
    // コールバックを登録(チャンネルCLOSE)
    data.on(SKWDataConnectionEventEnum.DATACONNECTION_EVENT_CLOSE, callback: { (obj:NSObject!) -> Void in
        self._data = nil
        self._bEstablished = false
        self.updateUI()
        self.appendLogWithHead("system", value:"DataConnection closed.")
    })
}