如何使用websocket和socket.io连接到JAVA中的SSL?

时间:2012-02-09 05:43:08

标签: android ssl socket.io wss sslengine

如何在java中访问wss://协议?

我使用benkay / java-socket.io.client 但它不支持wss协议。

我尝试过使用SSLEngine。但这是非常艰苦的工作。

如何在java中连接到ssl?

我尝试通过SSLEngine更改SocketChannel。但它没有奏效。

ssl频道没问题。但我无法连接这个原始的websocket部分。

这是源代码。

  client = SocketChannel.open(remote);
  client.configureBlocking(false);
  //client.connect(remote);

  selector = Selector.open();
  this.conn = new WebSocket(client, new LinkedBlockingQueue<ByteBuffer>(), this);
  client.register(selector, SelectionKey.OP_READ);

    try {
   sslClient = new SSLClient(keyStore, storepass.toCharArray(), client);
   sslClient.beginHandShake();
        startClient()


} catch (Exception e) {
   e.printStackTrace();
}

这点uncorret?我不知道..不一样的原始websocket代码..可能问题是这一点。怎么能解决它?

public void startClient()
{
    try
    {
        while(true)
        {
            if(selector.select() <= 0)
            {
                continue;
            }

            Iterator<SelectionKey> it = selector.selectedKeys().iterator();

            while(it.hasNext())
            {
                SelectionKey key = (SelectionKey)it.next();
                Log.e("key","key");
                if(key.isReadable())
                {
                    read(key);
                }
                it.remove();
            }               
        }
    }
    catch(Exception e)
    {

    }
}

和SSLClient是http://rapidant.tistory.com/attachment/cfile25.uf@121346414D45B0960BD01B.zip

密钥库:将JKS更改为BKS,而不是问题。

如何包装SocketChannel?

(网络浏览器有效。)

1 个答案:

答案 0 :(得分:2)

你可以查看我的Autobahn WebSocket库的分支。

Secure WebSockets based upon Autobahn

您不希望在Android上使用SSLEngine,因为它已损坏。