Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Websocket中的通道与代理与目标_Java_Spring - Fatal编程技术网

Java Websocket中的通道与代理与目标

Java Websocket中的通道与代理与目标,java,spring,Java,Spring,SpringWebSocket中的channel与broker与destination之间有什么区别 我最近开始使用websocket,根据我的理解: registry.addEndpoint(“/wsocket/”)添加websocket端点,该端点仅在客户端希望连接到websocket服务时使用: this.client.configure({ brokerURL: `ws://localhost:9022/wsocket`, onConnect: () =>

SpringWebSocket中的
channel
broker
destination
之间有什么区别

我最近开始使用websocket,根据我的理解:

registry.addEndpoint(“/wsocket/”)
添加websocket端点,该端点仅在客户端希望连接到websocket服务时使用:

this.client.configure({
      brokerURL: `ws://localhost:9022/wsocket`,
      onConnect: () => {
        this.client.subscribe('/quote/fb', message => {
          console.log(message);
        });
      }
    });
    this.client.activate();
config.enableSimpleBroker(“/quote”)
启用通道/代理,允许客户端订阅它并接收通过它发布/发送的消息。客户端可以订阅服务器上的任何
/quote/*

config.setApplicationDestinationPrefixes(“/app”)
设置应用程序前缀,客户端使用该前缀直接向应用程序发送消息,而不是通过代理发送消息


我的理解正确吗

我认为你的理解是正确的

经纪人

消息代理在处理两个应用程序之间的通信时充当中介平台。在spring websocket的上下文中:

使用Spring的STOMP支持时,SpringWebSocket应用程序充当客户端的STOMP代理。消息被路由到@Controller消息处理方法或一个简单的内存代理,该代理跟踪订阅并向订阅用户广播消息。您还可以将Spring配置为与专用STOMP代理(如RabbitMQ、ActiveMQ和其他)一起工作,以实际广播消息。在这种情况下,Spring维护到代理的TCP连接,将消息中继到代理,并将消息从代理向下传递到连接的WebSocket客户端

频道

它可以被认为是消息在一个或两个方向上的逻辑隔离。例如,可以有三个通道。一个用于请求(传入到服务器),第二个用于响应(从服务器传出),第三个用于错误(从服务器传出)

目的地

可以将其视为通道的另一层次嵌套。我发现这张图片有助于理解它:

[![在此处输入图像描述][1][1]

客户机可以使用SEND或SUBSCRIBE命令发送或订阅消息,以及描述消息内容和接收者的目标标头。这启用了一个简单的发布-订阅机制,您可以使用该机制通过代理向其他连接的客户端发送消息,或者向服务器发送消息,请求执行某些工作

我发现关于这个主题的Spring文档非常有用: