This repository has been archived by the owner on Jan 31, 2023. It is now read-only.
forked from rokihiro/webrtc-handson
-
Notifications
You must be signed in to change notification settings - Fork 1
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()
})
- データを受信した場合(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.")
})
}
- 開発前の準備
- ビデオチャットの作成
- 2.1.サーバへ接続
- 2.2.接続成功・失敗
- 2.3.メディアの取得
- 2.4.相手から着信
- 2.5.相手へ発信
- 2.6.UIのセットアップ
- テキストチャットの作成
- 3.1.サーバへ接続
- 3.2.接続成功・失敗
- 3.3.相手から着信
- 3.4.相手へ発信
- 3.5.UIのセットアップ
- チャレンジ課題