纯 Java 中的 WebSocket
Posted
技术标签:
【中文标题】纯 Java 中的 WebSocket【英文标题】:WebSocket in Plain Java 【发布时间】: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);
);
问候 一月
【问题讨论】:
【参考方案1】:修复了使用以下代码获取原始字节的问题:
byte[] bufferIO = new byte[inputIO.available()];
inputIO.read(bufferIO);
if (bufferIO.length != 0)
binary(clientIO, bufferIO);
string(clientIO, new String(bufferIO));
【讨论】:
以上是关于纯 Java 中的 WebSocket的主要内容,如果未能解决你的问题,请参考以下文章
java学习中,DVD管理系统纯代码(java 学习中的小记录)
多部分消息以文本/纯文本而不是 java 中的多部分/替代形式发送
java 利用jsoup 如何去除一段代码中的所有html标签,只留纯文本
如何在spring boot应用程序中配置Jackson而不覆盖纯java中的springs默认设置