当前位置: 首页 > news >正文

WebRTC 入门与实战(二)之中级篇

1  Socket.IO 服务端发送消息

1.1 给本次连接发消息

socket.emit()

1.2 给房间内所有人发消息

io.in(room).emit()

1.3 除本连接外,给房间内所有人发消息

socket.to(room).emit()

1.4 除本连接外,给所有人发消息

socket.broadcast.emit()

2  Socket.IO 客户端处理消息

2.1 发送 action 命令

S: socket.emit('action');
C: socket.on('action', function(){...});

2.2 发送一个 action 命令,还有 data 数据 

S: socket.emit('action', data);
C: socket.on('action', function(data){...});

2.3 发送一个 action 命令,还有两个 data 数据 

S: socket.emit('action', data1, data2);
C: socket.on('action', function(data1, data2){...});

2.4 发送一个 action 命令,在 emit 方法中包含回调函数

S: socket.emit('action', data1, function(arg1, arg2){..});
C: socket.on('action', function(data1, fn){fn('a', 'b');});

3 WebRTC 信令服务器

3.1 信令服务器的用途

3.2 为什么要使用 socket.io

socket.io 是 WebSocket 超集socket.io 有房间的概念socket.io 跨平台,跨终端,跨语言

3.3 socket.io 工作原理

3.4 通过 socket.io 实现信令服务器

3.4.1 改造服务端的基本流程

安装 socket.io引入 socket.io处理 connection 消息sudo npm install socket.io@2.0.4
sudo npm install log4js
var socketIo = require('socket.io');var log4js = require('log4js');
log4js.configure({appenders: {console: {type: 'console'},log: {type: 'file',filename: 'log.log',maxLogSize: 1024,backups: 3,compress: true}},categories: {default: {appenders: ['console', 'log'],level: 'debug'}}
})var logger = log4js.getLogger();var https_server = https.createServer(options, app);var io = socketIo.listen(https_server);io.sockets.on('connection', (socket)=> { console.log('connection');socket.on('join', (room)=> {socket.join(room);var my_room = io.sockets.adapter.rooms[room];var users = Object.keys(my_room.sockets).length;logger.log('the number of user in room is: ' + users);// socket.emit('joined', room, socket.id);// socket.to(room).emit('joined', room, socket.id); // 除自己之外 所有 人// io.in(room).emit('joined', room, socket.id); // 房间内所有人socket.broadcast.emit('joined', room, socket.id); // 除自己之外 ,全部 站点});socket.on('leave', (room)=> {var my_room = io.sockets.adapter.rooms[room];var users = Object.keys(my_room.sockets).length;logger.log('the number of user in room is: ' + (users - 1));socket.leave(room);// socket.emit('joined', room, socket.id);// socket.to(room).emit('joined', room, socket.id); // 除自己之外 所有 人// io.in(room).emit('joined', room, socket.id); // 房间内所有人socket.broadcast.emit('joined', room, socket.id); // 除自己之外 ,全部 站点});
});https_server.listen(443, '0.0.0.0');

3.5 socket.io 实现聊天室

<html><head><title>Chat Room</title><link rel="stylesheet" href="style.css"></head><body><table align="center"> <tr><td><label>Username</label><input type="text" id="username"></input></td></tr><tr><td><label>Room</label><input type="text" id="room"></input><button id="connect">Connect</button></td></tr><tr><td><label>Content</label><br><textarea  disabled id="output" rows="10" cols="50"></textarea></td></tr><tr><td><label>Input</label><br><textarea  disabled id="input" rows="3" cols="50"></textarea></td></tr><tr><td><button id="send">Send</button></td></tr></table><script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script><!-- <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> --><script src="js/client.js"></script></body>
</html>
'use strict'//const socket = require("socket.io/lib/socket");var usernaem = document.querySelector('input#userna
http://www.dtcms.com/a/449855.html

相关文章:

  • pass@1是什么意思
  • 沈阳网站建设技术公司百度站长工具seo
  • 做国内电影网站赚钱不简述电子商务网站开发的主要步骤
  • InputStream和OutputStream在网络编程发挥的作用
  • CCS闪退问题---------中文系统用户名
  • 专业电竞体育数据与系统解决方案
  • 初阶运维工程师工作内容与能力体系:专业视角解析
  • 我的钢铁网网站架构林芝北京网站建设
  • OpenManus项目架构解析
  • 【HarmonyOS】消息通知
  • 网上做流量对网站有什么影响asp.net 做网站实例
  • 深圳建设资格注册中心网站网站建设采用的技术
  • gRPC从0到1系列【22】
  • 闹钟定时器(Alarm Timer)初始化:构建可挂起的定时器基础框架
  • 云南公司建网站多少钱wordpress修改菜单的原始链接
  • 自己如何建设个网站首页站酷网官方入口网页版
  • 华为matebook16s 2022数字键无法使用解决方法
  • 邯郸网站建设品牌公司app和网站开发区别
  • 并查集的优化
  • LeetCode:93.最长回文子串
  • 设计作品网站有哪些宝塔建的数据库安装不了wordpress
  • 锐捷无线控制器基础配置
  • mineru处理后的文档生成对应层级的标题
  • 台山网站建设公司公司网站建设如何撤销
  • 辛集做网站公司麻豆秋白色蕾丝半身裙
  • Java:面向对象:内部类:静态内部类与非静态内部类的比较
  • 基于32位MCU的LVGL移植
  • 基于STM32单片机的语音控制智能停车场设计
  • (Kotlin协程十三)Dispatchers.Main, IO, Default 分别适用于什么场景?它们的底层是什么?
  • 郑州网站建设 seo郑州网络营销公司哪家好