【问题标题】:WebSocket in Plain Java纯 Java 中的 WebSocket
【发布时间】:2021-04-17 19:17:03
【问题描述】:

我正在用一个 WebServer 和一个 WebSocket 服务器为我编写一个 Web 框架。

我最近的问题是,我的 WebSocket 客户端的响应内容非常有趣......

每次值都是另一个值时,它不会将内容作为字节发送给我。

普通 HTTP 和 Socket 请求的 Web 响应完美运行。

我当前的代码:

                            poolIO.execute(new Thread() {
                            @Override
                            public void run() {
                                try {
                                    InputStream inputIO = clientIO.getInputStream();
                                    StringBuilder builderIO = new StringBuilder();

                                    while (clientIO.isConnected()) {

                                        int cacheIO = 0;
                                        int countIO = 0;
                                        byte[] binaryIO = new byte[0];


                                        while ((inputIO.available() != 0 && (cacheIO = inputIO.read()) != 0)) {
                                            binaryIO = new byte[binaryIO.length + 1];
                                            binaryIO[countIO] = (byte) cacheIO;
                                            builderIO.append((char) cacheIO);
                                            countIO++;
                                        }


                                        if (builderIO.length() > 0) {
                                            string(clientIO, builderIO.toString());
                                            binary(clientIO, binaryIO);
                                            binaryIO = new byte[0];
                                            builderIO.delete(0, builderIO.length());
                                        }
                                    }

                                    inputIO.close();

                                    disconnect(clientIO);

                                    this.stop();
                                } catch (IOException errorIO) {
                                    if (errorIO.getMessage().equalsIgnoreCase("Stream closed.")) {
                                        logIO.debug(GuardianLog.Type.INFO, "Client with IP " + clientIO.getInetAddress().getHostAddress() + " disconnected from Server with Port " + networkIO.getPort() + ".");
                                    } else logIO.append(GuardianLog.Type.ERROR, "Socket throw an Error ", errorIO);
                                }
                            }
                        });

问候 一月

【问题讨论】:

    标签: java http networking websocket webserver


    【解决方案1】:

    修复了使用以下代码获取原始字节的问题:

          byte[] bufferIO = new byte[inputIO.available()];
    
                                    inputIO.read(bufferIO);
    
                                    if (bufferIO.length != 0) {
                                        binary(clientIO, bufferIO);
                                        string(clientIO, new String(bufferIO));
                                    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-28
      • 2019-08-18
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多