2012-02-09 17 views
1

javaでwss://プロトコルにアクセスするにはどうすればよいですか?JAVAでwebsocketとsocket.ioでSSLに接続するにはどうすればいいですか?

私はbenkay/java-socket.io.client を使用していますが、wssプロトコルをサポートしていません。

私はSSLEngineを試してみました。それは非常に難しい作業です。

どのようにしてjavaのsslに接続できますか?

SSLEngineでSocketChannelを変更しようとしました。しかしそれは働かない。

sslチャネルはokです。しかし、私はこのオリジナルの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(); 
} 

この点は不快ですか?私は知らない。元の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/[email protected]

キーストアです:BKSに変更JKS、問題ありません。

どのようにSocketChannelをラップできますか?

(Webブラウザ、それが働いた。)

+0

SocketChannelをSSLSocketChannelに変更したいと思います。 しかしそれは働かない。ハンドシェイクまで –

+0

多分selector.select()= 0問題。 –

答えて

2

あなたはアウトバーンのWebSocketライブラリの私のフォークをチェックアウトすることができます。

Secure WebSockets based upon Autobahn

あなたはそれが壊れているので、Android上でSSLEngineのを使用する必要はありません。

関連する問題