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

加盟类网站建设宁波网站建设

加盟类网站建设,宁波网站建设,源码上传网站,nginx进wordpress不能进目录场景 Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中#xff1a; Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中-CSDN博客 Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作#xff1a; Wi…场景 Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中 Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中-CSDN博客 Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作 Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作_winform sqllite-CSDN博客 在上面实现Websocket客户端的基础上如何实现Websocket服务端并实现定时给所有的客户端群发消息。 群发的消息从SQLite中读取循环进行群发。 注 博客霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客 实现 1、Fleck GitHub - statianzo/Fleck: C# Websocket Implementation 新建Winform项目并使用Nuget引入依赖 搜索Fleck 按照官网说明快速实现Websocket服务端只需要 var server new WebSocketServer(ws://0.0.0.0:8181); server.Start(socket {socket.OnOpen () Console.WriteLine(Open!);socket.OnClose () Console.WriteLine(Close!);socket.OnMessage message socket.Send(message); }); 并且官方提供了一些示例demo比如群发消息的实现这里是在控制台项目中的示例 var allSockets new ListIWebSocketConnection();var server new WebSocketServer(ws://0.0.0.0:8181);server.Start(socket {socket.OnOpen () {Console.WriteLine(Open!);allSockets.Add(socket);};socket.OnClose () {Console.WriteLine(Close!);allSockets.Remove(socket);};socket.OnMessage message {Console.WriteLine(message);allSockets.ToList().ForEach(s s.Send(Echo: message));};}); demo位置 2、这里基于Winform设计窗体布局如下 3、启动服务端/开始监听按钮点击事件 新建WebSocketServer服务端对象便于停止监听 public WebSocketServer wsServer null; 新建一个list用来存储所有的客户端连接信息 private ListIWebSocketConnection allSockets new ListIWebSocketConnection(); 然后在开始监听按钮的点击事件中 private void button_start_listen_Click(object sender, EventArgs e){try{allSockets.Clear();string wsAddress textBox_server_address.Text.Trim();wsServer new WebSocketServer(wsAddress);    //创建webscoket服务端实例wsServer.Start(socket {socket.OnOpen () {//Console.WriteLine(Open);allSockets.Add(socket);};socket.OnClose () {//Console.WriteLine(Close);allSockets.Remove(socket);};socket.OnMessage message {//Console.WriteLine(message);                  };socket.OnError message {//Console.WriteLine(message);};});textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :监听成功);textBox_log.AppendText(\r\n);}catch (Exception exception){textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :监听异常: exception.Message);textBox_log.AppendText(\r\n);}         } 在建立连接和关闭事件中分别对客户端的list进行添加和删除。 4、停止监听的按钮点击事件中 遍历所有客户端的list循环进行关闭并销毁服务端对象 private void button_stop_listen_Click(object sender, EventArgs e){allSockets.ToList().ForEach(s s.Close());wsServer.Dispose();textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :监听停止);textBox_log.AppendText(\r\n);} 5、单次群发按钮点击事件 private void button_single_mass_Click(object sender, EventArgs e){if (null ! wsServer){string message textBox_message.Text.Trim();allSockets.ToList().ForEach(s {if (s.IsAvailable){s.Send(message);}});}else {textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :wsServer未启动);textBox_log.AppendText(\r\n);}} 判断服务端对象不为空遍历所有客户端list,判断如果可用则调用send方法发送string类型的消息。 6、加载数据按钮实现 用来从SQLite中读取需要循环群发的消息内容 首先声明string的list用来存储加载的数据 private Liststring loadDataList new Liststring(); 然后按钮的点击事件中 private void button_load_data_Click(object sender, EventArgs e){try{if (null wsServer){textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :wsServer未启动);textBox_log.AppendText(\r\n);}else{loadDataList.Clear();SQLiteDataReader reader Global.Instance.sqlLiteHelper.ExecuteQuery(SELECT* FROM positions;);if (reader.HasRows){while (reader.Read()){string data reader.GetString(reader.GetOrdinal(data));loadDataList.Add(data);}}textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :加载数据完成共( loadDataList.Count)条。);textBox_log.AppendText(\r\n);}}catch (Exception exception){textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :加载数据异常 exception.Message);textBox_log.AppendText(\r\n);}} 7、定时群发实现 首先新建定时器以及加载的数据的索引 Timer _timerMass new Timer();private int index 0; 定时群发按钮点击事件实现 private void button_start_mass_Click(object sender, EventArgs e){if (null wsServer) {textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :wsServer未启动);textBox_log.AppendText(\r\n);} else {_timerMass.Interval (int)numericUpDown_mass.Value;_timerMass.Tick _timer_Tick_Mass;_timerMass.Start();textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :定时群发已经启动!!);textBox_log.AppendText(\r\n);}} 定时器执行方法具体实现 private void _timer_Tick_Mass(object sender, EventArgs e){if (loadDataList.Count0) {if (index loadDataList.Count - 1){index 0;}string data loadDataList[index];allSockets.ToList().ForEach(s {if (s.IsAvailable) {s.Send(data);}             });index;}} 8、停止定时群发按钮点击事件实现 private void button_stop_mass_Click(object sender, EventArgs e){//停止定时器_timerMass.Tick - _timer_Tick_Mass;_timerMass.Stop();textBox_log.AppendText(DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) :定时群发已经停止!!);textBox_log.AppendText(\r\n);index 0;}
http://www.zqtcl.cn/news/892204/

相关文章:

  • 太原网站搭建推广id怎么编辑wordpress
  • 网站开发网站设计制作广告设计与制作基础知识
  • 企业建设H5响应式网站的5大好处网站备案后经营
  • 网站数据流分析怎么做河北搜索引擎推广方法
  • 哈尔滨网站建设咨询辽宁建设工程信息网怎么看项目经理是不是被锁住
  • 成立做网站的公司搭建网站有费用吗
  • 标志设计说明案例北京网站优化seo
  • 国外app设计网站佛山网站推广市场
  • 北京矿建建设集团有限公司 网站科技软件下载
  • 公司建网站要多少钱wordpress轮播框
  • 怎么看一个网站什么语言做的全网最新首码项目
  • 深圳网站建设ue网站空间和流量
  • 网站前端设计要做什么游仙建设局官方网站
  • 大型门户网站建设哪家好进一步加大网站集约化建设力度
  • 网站里面那些工作是做晚上兼职的钱包网站建设策划
  • 网站开发实现的环境自豪地采用wordpress 怎么去掉
  • ic商城网站建设网站备案关闭影响排名
  • qq官方网站进入wordpress调用文章某个分类
  • 南充网站建设设计略奥企业网站管理系统怎么修改密码
  • 网站建设里的知识360云主机可以建设网站吗
  • 创建网站代码上海网络公司查询
  • 电子商务网站建设与管理实训报告百度权重划分等级
  • 网站建设响应式是什么医院网站建设方案策划书
  • 开鲁网站seo不用下载男女做羞羞事动画网站免费
  • 做网站客户需求新乡专业做网站多少钱
  • 邢台建设银行官方网站二维码生成器app下载
  • 自己怎么做网站游戏做网站就是做app
  • 怎样做一元购网站wordpress+淘客代码
  • 网站建设发展现状贵阳有哪些做网站的公司
  • 微博上如何做网站推广蝉知和wordpress