gpt4 book ai didi

spring - WebSocket动态添加和删除Endpoints

转载 作者:行者123 更新时间:2023-12-02 19:53:25 26 4
gpt4 key购买 nike

我创建了这个Websocket项目Spring Websocket而且效果真的很好。我将在我的项目中介绍这个例子。我要求可以动态创建或删除/销毁(聊天)组。

在我的 WebsocketConfig 中,可以通过以下方式静态添加类端点:

registry.addEndpoint("/hello").withSockJS(); (also see below)

是否有可能动态添加端点?我的用例是我有属于一个或多个公司的公司和员工:

         n     m  (m:n relation)

company <--------> employees

并且可以动态创建公司(通过单击“创建”按钮)。然后就可以将之前注册的员工添加到公司中。因此,这意味着如果创建了一家公司(并且至少向公司添加了 2 名员工),则应添加一个端点。

我很高兴在这个方向上得到任何有用的答案。非常感谢!

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
// Prefix for messages FROM server TO client
config.enableSimpleBroker("/topic");
// Prefix for messages FROM client TO server
config.setApplicationDestinationPrefixes("/app");
// /app wird beim client - sendName verwendet: stompClient.send("/app/hello", {}, JSON.stringify({ 'name': name
// }));
}

@Override
public void registerStompEndpoints(final StompEndpointRegistry registry) {
registry.addEndpoint("/hello").withSockJS();
}
}

[编辑]向多个客户发送消息,但不是向所有客户发送消息。这是我当前的代码如下。发送给所有具有相同 id 的人工作正常,但我不知道如何将消息发送给例如4 个客户。感谢您的帮助!

@MessageMapping("/chat/{institutionId}")
public void greeting(@DestinationVariable String institutionId, final GreetingHelloMessage message) throws Exception {
final Greeting greeting = new Greeting(institutionId, "Hello " + institutionId + " - " + message.getName());
simpMessagingTemplate.convertAndSend("/topic/chat/" + institutionId, greeting);
}

最佳答案

你应该看看路径参数的方向。

如果您可以使用 localhost:8080/chat/{GROUP_NAME} 等结构,则无需为每个聊天使用不同的端点。

关于spring - WebSocket动态添加和删除Endpoints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32843788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com