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

发布于 2025-01-04 01:30:36 字数 1830 浏览 0 评论 0原文

如何在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();
}

这一点不正确??我不知道..与原始的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]

密钥存储:将 JKS 更改为 BKS,没问题。

如何包装 SocketChannel ?

(网络浏览器可以正常工作。)

How can access to wss:// protocol in java ?

i use benkay / java-socket.io.client
but it's not support wss protocol.

i tried use SSLEngine. but it's very hard work.

how can connect to ssl in java ?

I tried change SocketChannel by SSLEngine. but it is not worked.

ssl channel is ok. but i can't wire this original websocket part.

this is source code.

  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();
}

this point uncorret ?? i don't know .. not same the original websocket code.. may problem is this point. how can fix it ??

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)
    {

    }
}

and SSLClient is http://rapidant.tistory.com/attachment/[email protected]

key store : change JKS to BKS, not problem.

how can wrap the SocketChannel ?

(Web browser it worked.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帅气称霸 2025-01-11 01:30:36

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

基于 Autobahn 的安全 WebSocket

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

You could check out my fork of the Autobahn WebSocket Library.

Secure WebSockets based upon Autobahn

You don't want to use SSLEngine on Android because it is broken.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文