我有支持Spring Websocket的Spring服务器。我想用STOMP子协议来处理在网络套接字通信,所以STOMP端点的配置看起来如下:没有SockJS/StompJS的Spring STOMP服务器
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat")
.setAllowedOrigins("*")
.withSockJS();
}
}
Spring文档和基本的话题我能找到展示了如何任何资源使用SockJS + StompJS创建STOMP客户端。它的工作原理,但据我所知,它根本不需要 - 因为STOMP只是一个子协议,我应该能够使用STOMP消息语法基本上从任何Web套接字客户端与我的服务器进行通信。
假设我只是想从Google Chrome简单网络套接字客户端插件连接到我的STOMP服务器。根据STOMP规范,我所做的第一件事是打开网络套接字连接。我
WS做到这一点://my.server.here/chat/websocket
链接。这部分工作和我的连接建立。现在我想使用STOMP。同样作为STOMP规范说我现在应该发送CONNECT命令,如下所示(STOMP 1.1):
CONNECT
accept-version:1.0,1.1
host:my.host.here
^@
然后,我希望从与所连接的命令服务器的响应,但我什么也没得到。如果不是“CONNECT”,我会使用一些不存在的命令,比如“WRONG_COMMAND”,那么我可以看到有关未知命令的Spring异常,所以我想我的消息触及Spring的Websocket内部,但我无法得到任何回报。如果这可行,我希望使用后续的SEND,SUBSCRIBE等命令来执行操作。
这种工作流程甚至可能吗?我做错了什么,或者我错误地解决了整个想法和它的工作方式?
你解决了这个问题吗? – sjbwylbs
我没有用Google Websocket客户端解决它,但是我使用了不使用SockJS的移动应用程序。我发布了完整的答案和更详细的说明。随意问你是否还有其他问题。 – Plebejusz