websocket连接建立后Spring如何工作?

Posted

技术标签:

【中文标题】websocket连接建立后Spring如何工作?【英文标题】:How does Spring work after websocket connection established? 【发布时间】:2018-02-14 08:46:29 【问题描述】:

我有使用 Spring 的 Java 项目。我有几个控制器。我还创建了 WebSocket:

@ServerEndpoint("/websockettest")
public class WebSocketTest 

    private static Set<Session> peers = Collections.synchronizedSet(new HashSet<Session>());

    @OnMessage
    public String onMessage(Session peer, String message) 
        return message;
    

    @OnOpen
    public void onOpen (Session peer) throws IOException
        peers.add(peer);
    

    @OnClose
    public void onClose (Session peer) 
        peers.remove(peer);
    

您能否告诉我,在建立 websocket 连接后,我对控制器的所有请求都会通过这个 websocket 传输吗? 谢谢!

【问题讨论】:

自己尝试一下,而不是问过于宽泛而无法回答的问题。 【参考方案1】:

请创建一个控制器类

@Controller
class AccountsController 
@GetMapping("/homepage")
//code here....

套接字无法访问它,您可以为套接字创建单独的端点,如下所示

@MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(HelloMessage message) throws Exception 
        Thread.sleep(1000); // simulated delay
        return new Greeting("Hello, " + message.getName() + "!");
    

但是,您可以为 Websocket 映射和 URL 映射使用相同的控制器

你也可以查看网站了解更多关于spring WebSocket的信息,答案解释的很笼统所以我只是总结一下,

请也看看这个 https://spring.io/guides/gs/messaging-stomp-websocket/

【讨论】:

以上是关于websocket连接建立后Spring如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

安全的 Websocket 连接 (wss:) 在 tomcat / spring 中中止,而 https 正在工作

由于 CORS,Spring 和 React websocket 聊天无法正常工作

Spring 4.0 WebSocket 示例应用程序:无法建立 websocket 连接

如何正确关闭 websocket

Spring websocket连接未建立

Spring消息之WebSocket