Socket.D v2.5.12

适配对接 Solon WebSocket 接口

</> markdown

此例,直接将 Solon 的 WebSocket 监器接口转换为 Socket.D 的监听器(只需要引入 Socket.D 的内核包,不需要引入传输包),方便复用 Solon 的 Http 端口。其它 WebSocket Server 接口,也可以参考此例。

引入内核包:

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>socketd</artifactId>
    <version>2.5.12</version>
</dependency>

先启用 WebSocket

public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app-> {
            app.enableWebSocket(true);
        });
    }
}

1、应用示例

  • Broker 应用参考
//定义 websocket 处理,并转为 socket.d 监听接口(使用 BrokerListener)
@ServerEndpoint("/demo/websocket")
public class WebSocketToSocketd extends ToSocketdWebSocketListener {
    public WebSocketToSocketd() {
        // clientMode=false,表示服务端模式
        super(new ConfigDefault(false).fragmentHandler(new BrokerFragmentHandler()), 
              new BrokerListener());
    }
}
  • 常规应用参考
//定义 websocket 处理,并转为 socket.d 监听接口(也可以在这个类上,直接实现 Listener 接口)
@ServerEndpoint("/demo/websocket")
public class WebSocketToSocketd extends ToSocketdWebSocketListener {
    //注入 socket.d 协议监听器
    @Inject
    Listener socketdListener;

    public WebSocketToSocketd() {
        // clientMode=false,表示服务端模式
        super(new ConfigDefault(false));
    }
    
    @Init
    public void init(){
        setListener(socketdListener);
    }
}

//定义 socket.d 监听实现(可以扩展 socket.d 内置的几个监听器)
@Component
public class ListenerImpl implements Listener {
    ...
}