信令服务器房间设置

信令服务器房间设置,第1张

在WebRTC简介中提到信令服务器用于向中端传输数据,信令服务器是实现两个webRTC中端通信的重要角色。今天就来实现一下信令服务器。

作为前端开发对于后端的东西不是很熟悉,只能使用现成的一些服务器软件和nodejs来搭建信令服务器。

业务逻辑

当两个用户要进行通信时,他们首先要创建一个房间,成功加入房间之后,双方才能交换必要的信息。

当通信的双方结束通话后,用户需要发送离开房间的消息给信令服务器,此时信令服务器需要将房间内的所有人清除;如果房间里已经没有人了,还需要将空房间销毁掉。

这样的逻辑socket.io已经帮我们实现了,我们只需要使用就行,不需要自己重新开发。

因此,我们使用nodejs+express+socket.io实现信令服务器。

创建服务器

const http = require('http')//引入http库

const express = require('express')//引入express库

//创建HTTP服务,并侦听8980端口

const app = express()

const http_server = http.createServer(app)

http_server.listen(8080, '0.0.0.0')

1

2

3

4

5

6

7

1

2

3

4

5

6

7

首先,通过express创建一个Web应用;之后调用HTTP库的createServer()方法创建HTTP对象,即http_server;最后调用http_server对象的listen()方法侦听8080端口。通过上面的步骤就实现了一个HTTP服务。

注册socket.io的回调函数

io.sockets.on('connection', (socket) =>{

//收到message时,进行转发

socket.on('message', (message) =>{

//给另一端转发消息

socket.to(room).emit('message', message)

})

//收到 join 消息

socket.on('join', (room) =>{

var o = io.sockets.adapter.rooms[room]

//得到房

没有信令服务器,各个WebRTC之间是没办法通信的。

传递媒体数据有两个信息,必须经过信令服务器进行交换

通过SDP来表示,如编解码器是什么?是否支持音频视频?编码方式是什么?等

这些信息是通过SDP协议描述出来,通过信令服务器中转的

两个WebRTC客户端会尽可能选择P2P进行连接,那么进行连接前是如何发现对方的?就是通过信令服务器。

首先将你所有网络相关信息传到信令服务器,服务器帮你交换到对端,对端拿到你的信息后,

若在同一局域网内,直接通过P2P传输;若不在,首先进行P2P穿越,看是否能打通,打通则传输,打不通则中转等。

还有一点也需要信令服务器进行传输,比如加入房间,离开房间,禁言等功能

在传输时,一般有两种协议 TCP和 UDP

底层协议使用 UDP主要用于流媒体传输(音频视频)还有文本,文字聊天等,但 UDP是不可靠传输,是可以丢包的,当然音频视频是可以丢包的,丢失一帧只会卡顿下,还可以继续工作。

但信令服务器不能丢失数据,所有的包必须保证到达,否则断开连接,所以信令服务器一般使用TCP可靠性传输。

websocket底层使用的就是 TCP协议, socket.io 使用的也是TCP

在websocket官方中,是有三个服务器的,ROOM服务器(提供用户进出房间服务)、信令服务器、流媒体(中转)服务器

选用socket.io 即不用单独写ROOM服务器,这里ROOM和信令是同一个服务器

socket.io是一个基于Nodejs的库,在现有的Node Server上增加个socket.io即可

在任何终端都可以引入socket.io客户端的库,通过客户端的库就可以连接到 Nodejs中 socket.io服务器上

这样就可以建立连接,然后就可以创建,加入房间,这样房间内的人就可以通信了

多个 socke.io可以串行通信。

webrtc 浏览器与浏览器需要信令服务器。推荐选择ZEGO即构科技,该公司拥有4行代码,30分钟在APP、Web和小程序等应用内实现视频通话、语音通话,互动直播功能。【点击免费试用,0成本启动】

使用一个信令服务器,是为了能够在两个任意对等点之间建立连接。这是当今使用的Internet体系结构的简单现实。将任何内容从一个浏览器流到另一个浏览器的“传统”方式始终涉及中间的中继服务器。这是信令服务器进入的地方。两个对等方在彼此建立连接之前都已连接到信令服务器。因此,他们使用信令服务器代表他们中继消息,直到他们协商了直接的通话方式。如果没有本地子网的第三方的帮助,则可以协商连接。

想要了解更多关于这方面的相关信息,推荐咨询ZEGO即构科技。ZEGO即构科技是一家全球云通讯服务商,专注自研音视频引擎,服务覆盖全球,链接 5 亿终端用户。ZEGO即构科技覆盖212个国家/地区,全球用户体验毫秒级互动,日均通话时长达30亿分钟,跻身云通讯行业头部,全方位行业解决方案,满足百余个业务场景需要,服务客户4000家,70%泛娱乐/在线教育客户的选择。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/92649.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-07
下一篇2023-03-07

发表评论

登录后才能评论

评论列表(0条)

    保存