jetty websocket服务器:根据应用程序逻辑发送客户状态码
我正在写一个使用Jetty的Websocket服务器。
我的处理代码:
public class WebSocketServerHandler {
@OnWebSocketClose
public void onClose(int statusCode, String reason) {
System.out.println("Close: statusCode=" + statusCode + ", reason=" + reason);
}
@OnWebSocketError
public void onError(Throwable t) {
}
@OnWebSocketConnect
public void onConnect(Session session) {
}
@OnWebSocketMessage
public void onMessage(Session session, String message) {
}
@OnWebSocketMessage
public void onBinaryMethod(Session session, byte data[], int offset, int length) {
}
}
我的要求之一是发送基于业务逻辑insde onBinaryMethod
自定义状态代码
例如:发送1001作为超时状态码 (Jetty已经支持这个)
我不确定在哪里设置这些状态码。 我试过以下,但似乎并不奏效。
Session().getUpgradeResponse().setStatusCode();
的WebSockets
这里是关于WebSocket状态码的RFC
。
在与socket
进行通信期间,您不应在状态代码中发送此类信息。 发送message
而不是客户需要的信息。
如果您碰巧有兴趣关闭代码,您可以在Session
对象上提供这些信息,如下所示:
session.close(new CloseReason(YOUR_NUMBER, "Your reason"));
休息
如果您依赖这些代码使用REST服务 ,那么有很多选择:
我认为实现你的目标最简单的方法是使用setStatus(int)
:
@Context
HttpServletResponse response;
@Path("/method")
public void onBinaryMethod() {
int statusCode = 200;
//SOME CODE
response.setStatus(statusCode);
}
这是一个很好的答案,列出了很多可能的解决方案:
https://stackoverflow.com/a/22869076/4823977
链接地址: http://www.djcxy.com/p/45589.html上一篇: jetty websocket server: Send customer status code based on application logic