持续创作,加速成长!这是我参与「掘金日新计划 · 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服务的启动。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。