使用 Spring Boot 的 WebRTC 信令服务器示例

在本文中,我将介绍如何构建一个用于 WebRTC 聊天应用程序的简单信令服务器。我还没有找到很多关于这个主题的文章,所以希望这篇文章能帮助你对 WebRTC 聊天应用程序中的信令操作有一个基本的了解。

使用 Spring Boot 的 WebRTC 信令服务器示例

问题陈述

  • WebRTC 聊天应用程序的信令服务器

解决方案

这里的解决方案是使用WebSocket技术。我使用 Spring Boot 在短时间内创建了 WebSocket 服务器。

业务流程的角度来看,我们将实现WebSocket服务器来处理这些类型的信号:

  • Login
  • New Member
  • Answer
  • Offer
  • ICE
使用 Spring Boot 的 WebRTC 信令服务器示例
图片1:Login Activity Diagram

从上图可以看出,Login Activity主要处理生成userId,并将userId发送回WebSocket客户端。

使用 Spring Boot 的 WebRTC 信令服务器示例
图片2:New Member Activity Diagram

从上图可以看出,NewMember Activity主要是将新成员的userId广播给其他WebSocket客户端。

使用 Spring Boot 的 WebRTC 信令服务器示例
图3:Other Activity Diagram

从上图中,我们可以看到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

(0)

相关推荐

发表回复

登录后才能评论