2022-6月更文挑战14-通过springboot项目进行socketIO服务搭建

252 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

通过springboot项目进行socketIO服务搭建

前文

本文内容为通过springboot项目进行socketIO服务搭建的一种方式。socketIO是一种常用的网络通信方式,而有些时候我们需要在springboot项目中进行socketIO服务启动,这就需要springboot项目能够同时支撑http端口及socketIO端口,下面将详细介绍该方案。

环境准备

首先这是一个springboot项目,自然有一些需要依赖的包等内容,此处不进行额外的叙述。主要需要单独进行一下socketIO包的引入。

<dependency>
    <groupId>com.corundumstudio.socketio</groupId>
    <artifactId>netty-socketio</artifactId>
    <version>${socketio.version}</version>
</dependency>

配置信息

准备好环境之后,自然还需要一些配置信息,尤其是端口信息等。此处的配置信息分为两部分,一部分为配置文件中的配置内容,另一部分则为在初始化阶段,socketIO需要单独配置的内容。

socketio:
  port: 9922
  customNamespaces:
    - "/test"
@ConfigurationProperties(prefix = "socketio")
@Configuration
public class SocketIOConfiguration {
    @Bean("socketIOServer")
    public SocketIOServer socketIOServer(TokenAuthorizationListener tokenAuthorizationListener) throws UnknownHostException {
        com.corundumstudio.socketio.Configuration configuration = new com.corundumstudio.socketio.Configuration();
        configuration.setPort(port);
        configuration.setAuthorizationListener(tokenAuthorizationListener);
        configuration.setExceptionListener(new ExceptionListener() {
            // 此处省略
        });
        SocketIOServer socketIOServer = new SocketIOServer(configuration);
//        初始化namespaces
        for (String customNamespace : customNamespaces) {
            socketIOServer.addNamespace(customNamespace);
        }
        return socketIOServer;
    }
}

上述的配置也是分成了前面所说的两部分,第一部分为配置文件,主要进行了端口的配置;第二部分则为实际对于socketIO启动的配置信息,主要包含对于上述信息的应用,例如端口设置、命名空间设置以及各种监听器等等。显然,第二部分为实际的socketIO启动内容的初始化,也是实际进行socketIO启动主要依赖的内容。

服务的启动

经过了上面的配置信息,已经把需要配置的内容配置好,那么显然下一步则是socketIO服务的启动。由于我们已经通过配置文件将服务启动器进行了bean注入,因此直接获取bean启动器并对其进行执行即可完成服务的启动。

@Component
public class SocketIOStartup {
    @Autowired
    private SocketIOServer socketIOServer;

    private void startUpServer() {
        bindListener();
        socketIOServer.startAsync();
    }
}

如上所示,即完成了socketIO服务的启动。而在实际的应用中,还需要进行若干监听器的设置,针对socketIOserver。此处不进行监听器具体细节的描述,主要是对于连接的监听、消息的监听等等。按照这种方式,也就能够完成socketIO服务的启动。

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。