Skip to main content
Version: 2.5.0

Websocket Proxy

This document is intended to help the Websocket service access the Apache ShenYu gateway. The Apache ShenYu gateway uses the Websocket plugin to handle Websocket service.

Before the connection, start shenyu-admin correctly, start Websocket plugin, and add related dependencies on the gateway and Websocket application client. Refer to the previous Quick start with Websocket .

For details about client access configuration, see Application Client Access Config .

For details about data synchronization configurations, see Data Synchronization Config).

Add Websocket plugin in gateway#

Add the following dependencies to the gateway's pom.xml file , which is introduced by default:

        <!--shenyu websocket plugin start-->        <dependency>            <groupId>org.apache.shenyu</groupId>            <artifactId>shenyu-spring-boot-starter-plugin-websocket</artifactId>            <version>${project.version}</version>        </dependency>
  • Restart your gateway service.

Websocket service access gateway#

Please refer to: shenyu-examples-websocket, Contains examples of the three implementations of annotation websocketspring native websocketspring reactive websocket

  1. In the Websocket service, add the following dependencies:
        <dependency>            <groupId>org.apache.shenyu</groupId>            <artifactId>shenyu-spring-boot-starter-client-websocket</artifactId>            <version>${shenyu.version}</version>        </dependency>
  1. Add the following configuration to the application.yaml configuration file:
shenyu:  register:    registerType: http    serverLists: http://localhost:9095 # shenyu-admin ip and port    props:      username: admin      password: 123456  client:    websocket:      props:        contextPath: /ws-annotation        appName: ws-annotation        port: 8001 # need to be consistent with the service port
  1. Add @ShenyuSpringWebSocketClient annotation to the Websocket service interface implementation class, start your service and after successful registration, go to Client List -> Proxy -> Websocket in the shenyu-admin management system and you will see the auto-registered selector and rule information.

示例:

@ShenyuSpringWebSocketClient("/myWs")@ServerEndpoint("/myWs")public class WsServerEndpoint {    @OnOpen    public void onOpen(final Session session) {        LOG.info("connect successful");    }
    @OnClose    public void onClose(final Session session) {        LOG.info("connect closed");    }
    @OnMessage    public String onMsg(final String text) {        return "server send message:" + text;    }}

User Request#

You need to request your Websocket service via the ws protocol. The Apache ShenYu gateway will configure a routing prefix which is the contextPath in the access gateway configuration file. For example: ws://localhost:9195/ws-annotation/myWs, after which you can establish a connection to send and receive messages normally.