在本文中,我将介绍如何构建一个用于 WebRTC 聊天应用程序的简单信令服务器。我还没有找到很多关于这个主题的文章,所以希望这篇文章能帮助你对 WebRTC 聊天应用程序中的信令操作有一个基本的了解。
问题陈述
- WebRTC 聊天应用程序的信令服务器
解决方案
这里的解决方案是使用WebSocket技术。我使用 Spring Boot 在短时间内创建了 WebSocket 服务器。
从业务流程的角度来看,我们将实现WebSocket服务器来处理这些类型的信号:
- Login
- New Member
- Answer
- Offer
- ICE
从上图可以看出,Login Activity主要处理生成userId,并将userId发送回WebSocket客户端。
从上图可以看出,NewMember Activity主要是将新成员的userId广播给其他WebSocket客户端。
从上图中,我们可以看到ICE/Answer/Offer Activity主要处理将信号从发送者转发到各自的接收者。
从技术角度来看,我们需要在maven中添加这些依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
与WebSocket客户端交换的信号数据将使用JSON格式。JSON 由 4 个字段组成:
- userId:发送数据的用户Id
- type(必填):信号类型(登录、新会员、应答、优惠、ICE、用户 ID)
- data:要发送的数据,可以是ICE包、Offer包、Answer包等
- toUid:待发送数据目的地的UserId
我们需要为信号类型创建枚举,如下所示:
public enum SignalType {
Login,
UserId,
Offer,
Answer,
Ice,
NewMember,
}
我们需要创建一个带有必要注解的 Spring Boot 应用程序:
@SpringBootApplication
public class SignallingServerApplication {
public static void main(String[] args) {
SpringApplication.run(SignallingServerApplication.class, args);
}
}
我们还需要像下面这样实现 WebSocket 配置器。使用 allowed-origin 来限制可以调用 WebSocket 服务器的域。
@Value( "${allowed.origin:*}" )
private String allowedOrigin;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new SignalingHandler(), "/socket1").setAllowedOrigins(allowedOrigin);
}
我们还需要实现 TextWebSocketHandler,并创建一个与我们之前设计的业务流程相匹配的流程。完整的代码可以看这个github
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/29773.html