N
O
D
E
M
E
D
I
A
Thinking
首页
产品
文档
博客
订单
文档
聊天室
2026年 5月 20日 下午3:36
[TOC] ## 简介 NodeMediaServer v3.21.9 新增websocket API,用于创建聊天室,进行webrtc视频通话或文本聊天 - 文本消息可以发广播,也可以指定用户接收 - 文本消息目前没有历史记录,新加入者只能接收到最新的消息 - 可以不使用视频聊天功能,只为直播开启文本群聊或者弹幕 - 视频通话采用Mesh模式,用户之间相互发起webrtc连接,音视频不传输到服务端。 - 公网视频通话需要配合STUN/TURN服务器 ## 创建连接 ### 简要描述 通过websocket向NodeMediaServer发起连接,如果需要用到webrtc功能,则需要使用wss ### 请求URL - ` ws://server_ip:8000/{roomID}/{userID}.chat` - ` wss://server_ip:8443/{roomID}/{userID}.chat` ### 请求方式 - WebSocket ### 参数 |参数名|必选|类型|说明| |:---- |:---|:----- |----- | |roomID |是 |string |房间号 | |userID |是 |string | 用户号 | ### 说明 进入同一个roomID的用户,可以互相之间发送群聊消息 同一个房间内,用户id不能重复 ## 发送消息 ### 简要描述 消息体为json格式的文本字符串 ### 消息格式 ```json { type: "chat", from: "接收消息时确认消息从谁发来。当用户发送消息时,不用定义该字段,服务器会自动插入", to:"当设置为空时,则为群发消息,也可以指定用户号进行单发" header: "扩展字段,字符串类型,可用于区分payload的类型或其它扩展用途" payload: "消息体,字符串,如果是其它类型,可以先转为base64", } ``` ### 消息类型 - "join" 当有用户进入房间时,收到的群发消息 - "leave" 当用户离开房间时,收到的群发消息 - "offer" webrtc的offer消息,客户端发送和接收 - "answer" webrtc的answer消息, 客户端发送和接收 - "candidate" webrtc的candidate消息, 客户端发送和接收 - "chat" 文本聊天消息,客户端发送和接收 ### 视频聊天流程 1. 用户进入房间时,收到join消息,如果消息体内from 不为当前用户的id,则表示有新用户加入,则向它发起offer 2. 当收到offer,webrtc pc设置远程offer,并创建answer,将answer发给offer发起者 3. offer发起者设置answer 4. 互相发送candidate ### 文本聊天流程 1. 加入房间后,直接发chat 消息体,则为群聊 2. chat消息体设置to,则指定用户接收 ### header 内容 用于自定义功能,字符串类型 ### payload 内容 **注意!! payload只接收string格式** - 当发送offer answer candidate时,先使用JSON.stringify()将对象转为json字符串,在用btoa()转为base64 - 当接收到offer answer candidate时,先用atob()转为json字符串,再用JSON.parse()还原 ## 直播时群聊 当聊天室API仅作为文本聊天时,可以实现简单的直播时群聊功能。 ### 流程 1. 为每个直播间定义一个唯一id,作为房间号 2. 每个用户的唯一id作为用户号 3. 创建websocket连接,群发chat消息 ## 例子 - 4人视频群聊 https://www.nodemedia.cn/demo/chat 房间号要一致 - 直播时群聊 https://www.nodemedia.cn/demo/live_and_chat/
嘿,我是小R,需要帮助随时找我哦
QQ客服:281269007
邮件支持
扫码加微信
回到顶部