0xZhangKe / WebSocketDemo

用于简化 WebSocket 在 Android 平台使用的封装方法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

websocketthread问题

feixiangsmile opened this issue · comments

服务绑定的话,可能还未绑定回调 onServiceConnected,从而也就没有addListener添加监听

public void onServiceConnected(ComponentName name, IBinder service) { webSocketServiceBindSuccess = true; binding = false; bindTime = 0; mWebSocketService = ((WebSocketService.ServiceBinder) service).getService(); mWebSocketService.addListener(mSocketListener); webSocketPage.onServiceBindSuccess(); }
会造成,线程WebSocketThread 可能已经运行了,并且连接websocket成功了,在如下 mSocketListener.onConnected()得不到回调(正如前面所述监听还没添加呢)。。。
` private void connect() {
if (connectStatus == 0) {
connectStatus = 1;
try {
if (mWebSocket == null) {
if(TextUtils.isEmpty(WebSocketSetting.getConnectUrl())){
throw new RuntimeException("WebSocket connect url is empty!");
}
mWebSocket = new WebSocketClient(new URI(connectUrl), new Draft_6455()) {

                        @Override
                        public void onOpen(ServerHandshake handShakeData) {
                            connectStatus = 2;
                            Log.d(TAG, "WebSocket 连接成功");
                            if (mSocketListener != null) {
                                mSocketListener.onConnected();
                            }
                        }
                          ...................`

我修复了此问题, 在服务绑定回调函数onServiceConnected中 mWebSocketService.addListener(mSocketListener);后面启动线程。

新版本已经解决