Java-WebSocket wss通信异常

Java-WebSocket wss通信异常

前阵子一个Android APP的网络模块需要使用websocket,服务器已经搭好,js写websocket舒服得很,相对于android使用websocket容易多了。搜索了一下,java_websocket和okhttp都可以实现相关功能,我选了前者作为实现,android studio可以直接gradle添加

compile 'org.java-websocket:Java-WebSocket:1.3.0'

另外一种方法要复杂一点,依次点击
project structure->app->dependencies-> + ->library dependency 然后搜索‘WebSocket’,找到对应的依赖,双击即可,这种方法可以用在搜索其它库的最新版本。

demo代码

import android.util.Log;

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft;
import org.java_websocket.handshake.ServerHandshake;

import java.net.URI;

/**
 * Created by root on 17-1-18.
 */

public class WSClient extends WebSocketClient {
    private static final String TAG = "WSClient";
    public WSClient(URI serverURI) {
        super(serverURI);
    }

    public WSClient(URI serverUri, Draft draft) {
        super(serverUri, draft);
    }

    @Override
    public void onOpen(ServerHandshake handShakeData) {
        Log.d(TAG, "onOpen: websocket opened successfully");

    }

    @Override
    public void onMessage(String message) {
        Log.d(TAG, "onMessage: message"+message);
    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        Log.d(TAG, "onClose: websocket closed");

    }

    @Override
    public void onError(Exception ex) {
        ex.printStackTrace();
    }
}

上面的demo稍微修改一下就可以使用,放在onCreate函数里面,新开一个线程处理就行

public void initWebsocket(){
        String url="ws://192.168.1.101:8088"; //改成自已服务端的地址
        Draft draft = new Draft_17();
        try {
            URI uri = new URI(url);
            mClient = new WSClient(uri, draft);
            mClient.connect();
        } catch (URISyntaxException e) {
            e.printStackTrace();
            return;
        }

    }

问题是,当我把url改为 String url=”wss://www.xxx.xxx/wss”,也就是加了ssl协议的url,就一直连接不上,

解决方法

(未真正解决)由于服务器是nginx做的ssl代理,直接改成本来的端口就可以用了,也就是类似于上面的ws地址,不经过nginx代理就可以正常通信。

你可能感兴趣的:(Java-WebSocket wss通信异常)