- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.intel.webrtc.conference.SignalingChannel.sendMsg(java.lang.String, org.json.JSONObject, io.socket.client.Ack)' on a null object reference
at com.intel.webrtc.conference.ConferenceClient$9.run(ConferenceClient.java:559)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
推测原因,可能是因为我们的服务器会在会议结束时关闭会议。然后同时调用了 ConferenceClient.leave()方法出现的。
public void onRoomDisconnected() { CheckCondition.DCHECK(this.callbackExecutor); this.changeRoomStatus(ConferenceClient.RoomStates.DISCONNECTED); this.callbackExecutor.execute(new Runnable() { public void run() { ConferenceClient.this.closeInternal(); Iterator var1 = ConferenceClient.this.observers.iterator(); while(var1.hasNext()) { ConferenceClient.ConferenceClientObserver observer = (ConferenceClient.ConferenceClientObserver)var1.next(); observer.onServerDisconnected(); } } }); }
private void closeInternal() { Iterator var1 = this.pcChannels.keySet().iterator(); while(var1.hasNext()) { String key = (String)var1.next(); ((ConferencePeerConnectionChannel)this.pcChannels.get(key)).dispose(); } this.pcChannels.clear(); this.subCallbacks.clear(); this.pubCallbacks.clear(); this.signalingChannel = null; this.conferenceInfo = null; this.joinCallback = null; }
由于我们的业务是多人会议,客户端不知道会议已经结束,会议结束由服务器业务控制,所以每个成员退出会议都会调用ConferenceClient.leave()方法。
下面是leave方法的实现,发现存在线程同步问题。希望下个版本能够解决。
public void leave() { if (this.checkRoomStatus(ConferenceClient.RoomStates.DISCONNECTED)) { Log.w("ICS", "Wrong room status when leave."); } else { CheckCondition.DCHECK(this.signalingChannel); this.sendSignalingMessage("logout", (JSONObject)null, new Ack() { public void call(Object... args) { CheckCondition.DCHECK(ConferenceClient.this.extractMsg(0, args).equals("ok")); ConferenceClient.this.signalingChannel.disconnect(); } }); } }
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
谢谢反应问题 我们会尽快找出并修复问题。
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page