C#采用Websocket实现同步通信,远程同步画板操作(完成实现同步画板演示,实时聊天,实时语音流
C# 如何实现网络通信,方法有很多就不一一介绍了。此处使用C#的Fleck来实现。
一、Fleck是什么?它的作用是什么,可以实现什么?
1、Fleck是一个用C#实现的WebSocket服务器,256K小而精,功能强大。
2、从Nugget项目分支,Fleck不需要继承、容器或其他引用。需要注意的是:Fleck不依赖HttpListener或HTTP.sys, 这意味着它将在Windows 7和Server 2008主机上工作。
首先创建一个工程项目SynView,在NuGet下载Fleck,Fleck大小只有256K.
下载完成之后,此时项目中已经引入Fleck。
引入命名空间:
//开启debug日志信息提示 FleckLog.Level = LogLevel.Debug; 根据需求实例化,开启之后会有详细的运行,错误等信息提示。
下面是一个向客户机响应的示例。
List<IWebSocketConnection> allSockets = new List<IWebSocketConnection>(); //此处IP地址(192.169.68.103:8866),端口均为虚构地址,如有雷同纯属巧合 WebSocketServer server = new WebSocketServer("ws://192.169.68.103:8866"); server.Start(socket => { socket.OnOpen = () => { //当有通讯进行链接时就会打开一个通信通道 //socket会携带与之链接的http等信息,其中包含IP,端口,head信息等 //添加进socket集合 allSockets.Add(socket); }; socket.OnClose = () => { //关闭时进行移除与之断开的socket allSockets.Remove(socket); }; socket.OnMessage = (message) => { //主控端发来消息,此处再发送给被控端 //此处未进行IP过滤,信息会进行群发。所有此时链接的IP均会收到这个message信息。 allSockets.ToList().ForEach(s => s.Send(message)); }; });
此时服务器端通信已经完成(此处起到一个中间站的作用)
1. 然后我们在已经建立websocket站点的情况下实现第一个功能:远程同步画板
(1)、创建一个html项目,例如index.html. 既然是画板那么就需要使用画布canvas
如:
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>同步画板演示</title> <style type="text/css"> canvas { position: absolute; box-shadow: 1px 1px 10px 3px #5c5555; left: 50%; top: 50%; transform: translate(-50%,-50%); } </style> </head> <body> <canvas id="canvas" width="800" height="900"></canvas> </body> </html>
这里创建了一个800×900像素自适应居中的画布,效果如图:
补充:如何实现鼠标在画布上进行绘图。
分为三步
第一步:鼠标点下去绘制起点
第二步:鼠标移动开始按照鼠标轨迹点绘制随意的坐标点轨迹
第三步:鼠标抬起来停止绘制
2. 接下来实现第二个功能:实时聊天
3. 现在实现最后一个功能:实时语音流推送(语音聊天

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
NumPy之:ndarray多维数组操作
简介 NumPy一个非常重要的作用就是可以进行多维数组的操作,多维数组对象也叫做ndarray。我们可以在ndarray的基础上进行一系列复杂的数学运算。 本文将会介绍一些基本常见的ndarray操作,大家可以在数据分析中使用。创建ndarray 创建ndarray有很多种方法,我们可以使用np.random来随机生成数据: importnumpyasnp#Generatesomerandomdatadata=np.random.randn(2,3)data array([[0.0929,0.2817,0.769], [1.2464,1.0072,-1.2962]]) 除了随机创建之外,还可以从list中创建: data1=[6,7.5,8,0,1] arr1=np.array(data1) array([6.,7.5,8.,0.,1.]) 从list中创建多维数组: data2=[[1,2,3,4],[5,6,7,8]] arr2=np.array(data2) array([[1,2,3,4], [5,6,7,8]]) 使用np.zeros创建初始值为0的数组: np.zeros(...
- 下一篇
VMware Horizon View 虚拟机状态为“正在删除 缺少”
VMware Horizon View 虚拟机状态为“正在删除 缺少” 一、 故障现象 本例只针对没有ViewDbChk工具的老版本horzion平台环境 近期新接手了一套horzion5.3.4的虚拟化平台,此平台尚不清楚之前做过那些操作,只知道报以下错误: 1. 系统环境 vCenter:5.5 ESXi:5.5 Horzion:5.3.4 操作系统:WindowsServer2008R2 2. 故障描述 1、桌面池删除后,原桌面池始终存在,状态在“正在删除”状态 2、桌面虚拟机状态为“正在删除(缺少)”,无法正常删除 3、虚拟机副本状态为灰色,孤立状态,无法删除 二、 原因分析 由于新接手业务,尚不清楚之前管理员做了那些操作,所以初步判断故障可能是以下原因造成: 1、管理员直接在vCenter平台内删除了链接克隆虚拟机或者挪动了虚拟机文件夹或资源池的层级位置; 2、对CS、composer、数据库或者vcenter进行了某个设备的备份恢复操作,导致LDAP、vCenter 和 View Composer 数据库之间存在不一致情况。 不管是何种原因,个人认为均是数据库不一致造成的问...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker安装Oracle12C,快速搭建Oracle学习环境