Session 在websocket会话建立后发送标头/正文

Session 在websocket会话建立后发送标头/正文,session,websocket,spring-websocket,Session,Websocket,Spring Websocket,我正在使用org.eclipse.jetty.websocket.client.WebSocketClient建立websocket连接。 初始握手(协议切换/升级)后,建立websocket会话 以下是我正在使用的截取代码: WebSocketClient client = new WebSocketClient(); client.start(); URI echoUri = new URI("destinationURI"); ClientUpgradeRequest request =

我正在使用org.eclipse.jetty.websocket.client.WebSocketClient建立websocket连接。 初始握手(协议切换/升级)后,建立websocket会话

以下是我正在使用的截取代码:

WebSocketClient client = new WebSocketClient();
client.start();
URI echoUri = new URI("destinationURI");
ClientUpgradeRequest request = new ClientUpgradeRequest();      
request.setHeader("myCustomHeader", "CustomHeader");    
client.connect(socket, echoUri, request);

Collection<WebSocketSession> sessions = client.getConnectionManager().getSessions();
for (WebSocketSession webSocketSession : sessions) {
    webSocketSession.getRemote().sendString("<Custome message>");//I am able to recieve the messages //to the configured message handler
}
在建立web套接字会话后,是否可以发送自定义标头

以下是我尝试过的:

WebSocketClient client = new WebSocketClient();
client.start();
URI echoUri = new URI("destinationURI");
ClientUpgradeRequest request = new ClientUpgradeRequest();      
request.setHeader("myCustomHeader", "CustomHeader");    
client.connect(socket, echoUri, request);
Collection<WebSocketSession> sessions = client.getConnectionManager().getSessions();
for (WebSocketSession webSocketSession : sessions) {
    webSocketSession.getUpgradeRequest().setHeader("mySecondCustomHeader","MySecondCustomHeader");
    webSocketSession.getRemote().sendString("<Custome message>");//I am able to recieve the messages //to the configured message handler
}
在web套接字会话结束后,是否可以发送自定义标头 成立


不,这是不可能的。一旦HTTP协商结束,连接只使用二进制帧进行通信,不能进行更多的HTTP交互。

我基本上也在研究API的功能。webSocketSession.getUpgradeRequest().setHeader()的功能/用途是什么;?文档还不够。可能还有另一种方法可以替代,可以将代码挂接到HTTP协商,也可以在HTTP响应中添加内容。小的补充:WebSocket规范允许在执行WebSocket结束握手后再次说出HTTP-同时,非关闭的底层TCP连接。请确定。这是通常的HTTP 1.0“持久连接”概念。
WebSocketClient client = new WebSocketClient();
client.start();
URI echoUri = new URI("destinationURI");
ClientUpgradeRequest request = new ClientUpgradeRequest();      
request.setHeader("myCustomHeader", "CustomHeader");    
client.connect(socket, echoUri, request);
Collection<WebSocketSession> sessions = client.getConnectionManager().getSessions();
for (WebSocketSession webSocketSession : sessions) {
    webSocketSession.getUpgradeRequest().setHeader("mySecondCustomHeader","MySecondCustomHeader");
    webSocketSession.getRemote().sendString("<Custome message>");//I am able to recieve the messages //to the configured message handler
}
@Override
    protected void handleTextMessage(WebSocketSession session,
            TextMessage message//This is what i sent above) throws Exception {
        session.getHandshakeHeaders();//This has "myCustomHeader", "CustomHeader"
        BinaryMessage binaryMessage = new BinaryMessage(new String(
                "Hello . This is message sent from server").getBytes());
        session.sendMessage(binaryMessage);
    }