在 MyServerHandler 中为 Netty websocket 写啥
Posted
技术标签:
【中文标题】在 MyServerHandler 中为 Netty websocket 写啥【英文标题】:What to write in MyServerHandler for Netty websocket在 MyServerHandler 中为 Netty websocket 写什么 【发布时间】:2012-08-17 14:27:55 【问题描述】:我已经编写了我的 websocket 服务器类并编写了 ServerPiplineFactory 类,但我不知道在 MyServerHandler 类中编写。 MyServerHandler 类就像
public class DiscardServerHandler extends SimpleChannelUpstreamHandler
private static final String WEBSOCKET_PATH = "/websocket";
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception
Object msg = e.getMessage();
//ctx.getChannel().write(msg);
//msg.getClass();
if (msg instanceof HttpRequest)
//ctx.getChannel().write(msg);
else if (msg instanceof WebSocketFrame)
System.out.println("I am WebSocketFrame");
所以我不知道如果我收到 HttpRequest 应该写什么以及如何将它发送回浏览器。
所以如果在我的jsp文件中写下类似的东西
</script>
var WEBSOCKET_URL = "ws://localhost:8090/websocket";
$(document).ready(function()
ws = new WebSocket(WEBSOCKET_URL);
ws.onopen = function(event)
alert("test");
$('#status').text("Waiting....");
;
ws.onmessage = function(event)
var message = jQuery.parseJSON(event.data);
alert(message);
var encoded = $.toJSON("test message");
ws.send(encoded);
);
</script>
<body>
<p id="status"> </p>
</body>
并调试这个jsp然后它转到messageReceived然后我不明白该怎么做然后websocket服务器如何与服务器通信。
因此,如果有人可以帮助我找到有关此的文档或对此进行一些解释,那就太好了。
【问题讨论】:
【参考方案1】:您需要进行握手。查看 [1] 中的 websocket 示例。
[1]https://github.com/netty/netty/blob/3/src/main/java/org/jboss/netty/example/http/websocketx/server/WebSocketServerHandler.java
【讨论】:
您好诺曼,感谢您的回复。我查看了链接,发现一个类 WebSocketServerHandshakerFactory 我需要这个吗?因为如果我使用它,我需要在 websocketx 包下使用 5-6 个类。我也不明白 WebSocketServerIndexPage.getContent(getWebSocketLocation(req));它只是从java类中获取内容我是否也需要这个,因为我有jsp文件而不是这个java来获取内容。我无法完全理解 WebSocketServerHandler.java 类,因为我是 websockets 的新手并第一次使用它以上是关于在 MyServerHandler 中为 Netty websocket 写啥的主要内容,如果未能解决你的问题,请参考以下文章