gpt4 book ai didi

java - 流媒体服务器的 Netty 4.x.x WebSocket 握手

转载 作者:行者123 更新时间:2023-11-30 10:42:25 27 4
gpt4 key购买 nike

我有一个Echo server example 来自Official Netty Echo Server

如何添加从 websocket 连接和流式传输的能力?

这是我的 ServerHandler 代码:

public class ServerHandler extends ChannelInboundHandlerAdapter
{
@Override
public void channelRegistered(ChannelHandlerContext ctx) throws Exception {
super.channelRegistered(ctx);
// !!!!! Think here should be WebSocket Handshake?
}

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg)
{
System.out.println(msg);
ctx.write(msg);
}

@Override
public void channelReadComplete(ChannelHandlerContext ctx)
{
ctx.flush();
}

@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
{
// Close the connection when an exception is raised.
cause.printStackTrace();
}
}

现在 Chrome 连接显示:与“ws://127.0.0.1:8080/”的 WebSocket 连接失败:WebSocket 握手期间出错:状态行无效

最佳答案

Netty 服务器不会自动处理所有协议(protocol),因此您需要添加对 WebSockets 的支持。

我发现最好的起点是检查 Netty 中的相关示例 xref页。向下滚动包列表,直到找到 io.netty.example 包。在该列表中,您会找到一个名为 io.netty.example.http.websocketx.server 的包.关于如何实现 websocket 服务器或处理程序,有一个相当简单且布局合理的示例。

Websocket 服务器比其他服务器稍微复杂一些,因为它们必须作为 HTTP 服务器开始使用,因为协议(protocol)指定 websocket 必须通过“升级”HTTP 连接来启动,但正如我所说,上面引用的示例使这个相当清楚。

关于java - 流媒体服务器的 Netty 4.x.x WebSocket 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com