我使用Spring Boot开发了这个websocket服务器。服务器与基于js的客户机配合得很好。
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(final MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(final StompEndpointRegistry registry) {
registry.addEndpoint("/chat").withSockJS();
registry.addEndpoint("/chat");
}
}
控制器:
@Controller
public class ChatController {
@MessageMapping("/chat")
@SendTo("/topic/messages")
public OutputMessage send(final Message message) throws Exception {
final String time = new SimpleDateFormat("HH:mm").format(new Date());
return new OutputMessage(message.getFrom(), message.getText(), time);
}
}
这是服务器端。现在,对于客户机,我已经创建了一个@ClientEndpoint,当我连接到URI“ws://localhost:8080/spring-mvc-java/chat”时,我能够建立一个连接,并且可以看到@ClientEndpoint的@OnOpen回调被触发。
但是,userSession.getAsyncRemote().sendText(message)似乎没有任何作用。我没有看到服务器的响应。
我可以看到js客户端是:
我能做到第一步。如何在基于Java的客户端中实现第二步和第三步?
谢谢
首先,您需要一个websocketclient和websocketstompclient
WebSocketClient client = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(client);
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
您必须从stompsessionhandler
自定义处理程序
getPayloadType
handleFrame
afterConnected
handleException
handleTransportError
方法
StompSessionHandler sessionHandler = new CustomStompSessionHandler();
你可以这样连接你的插座。您可以完成发送和接收消息
StompSession stompSession=stompClient.connect("ws://localhost:8080/chat",sessionHandler).get();
这两个触发您的websocket主题/messages
通过套接字为您提供消息
/app/chat
向套接字发送消息
stompSession.subscribe("/topic/messages", sessionHandler);
stompSession.send("/app/chat", new Message("Hi", "user"));
你想要这样吗?
我有一个连接到WebSocket服务器并从服务器接收消息的微服务。我想在这个应用程序中集成Sleuth,因为这是我的一组微服务的网关。但是当我连接到WebSocket服务器并开始接收消息时,我无法在日志中跟踪ID,spanid。我期待着这样的事情: 但我得到了: 我的代码如下: 我们的pom条目包括:
问题内容: 我正在尝试在Java中的服务器和JavaScript客户端之间建立连接,但在客户端出现此错误: WebSocket与“ ws://127.0.0.1:4444 /”的连接失败:在收到握手响应之前,连接已关闭 由于可能从未调用该函数,因此它可能保持在OPENNING状态。该不会被调用。 有人可以让我知道这里出了什么问题吗? 服务器 服务器线程 游戏协议 客户 问题答案: 首先,您的两个代
本文向大家介绍node.js基于express使用websocket的方法,包括了node.js基于express使用websocket的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了node.js基于express使用websocket的方法。分享给大家供大家参考,具体如下: 这个效果我也是翻了好长时间的资料,测试才成功的,反正成功,大家看看吧 首先你需要安装socket.io模块
我的情况是,我们目前正在编写一个使用Node的在线应用程序。服务器端的js和WebSocket侦听器。我们有两个不同的部分:一个是服务页面,另一个是使用节点。js和express ejs,另一个是完全不同的应用程序,只包含套接字。用于WebSocket的io库。现在我们来讨论WebSocket部分的可伸缩性问题。 我们发现的一个解决方案是使用redis并在服务器之间共享套接字信息,但由于体系结构的
我正在使用spring boot(2.2.2)和Grpc server spring boot starter java库开发一个基于java的Grpc服务器。我的客户端应用程序是一个C#应用程序(netcoreapp3.1)。这两个应用程序都在我的笔记本电脑上运行。 这是我的原始文件 这是服务代码 我首先用这个工具测试了服务器 该服务与此客户端工具配合使用效果良好。 然而,当我使用C#客户端测试