博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#版Websocket实例
阅读量:6933 次
发布时间:2019-06-27

本文共 2302 字,大约阅读时间需要 7 分钟。

 

Demo地址:

websocket有java、nodejs、python,Php等等版本,我使用的是C#版本,服务器端是Fleck,github地址:

这篇博客就是引用上面的一个例子教你如何使用客户端和服务器端来使用websocket的,对于英文还不错的同学,直接看上面 的源代码就可以了,下面开始讲解如何使用:

在说之前我们先来看看哪些浏览器支持websocket:

WebSocket客户端支持
浏览器 支持情况
Chrome Chrome version 4+支持
Firefox Firefox version 5+支持
IE IE version 10+支持
Safari IOS 5+支持
Android Brower Android 4.5+支持
WebSocket 服务端支持
厂商 应用服务器 备注
IBM WebSphere WebSphere 8.0 以上版本支持,7.X 之前版本结合 MQTT 支持类似的 HTTP 长连接
甲骨文 WebLogic WebLogic 12c 支持,11g 及 10g 版本通过 HTTP Publish 支持类似的 HTTP 长连接
微软 IIS IIS 7.0+支持
Apache Tomcat Tomcat 7.0.5+支持,7.0.2X 及 7.0.3X 通过自定义 API 支持
  Jetty Jetty 7.0+支持

 

现在我们看看浏览器端如何实现:

    websocket client        

服务器端我使用的是C#的控制台程序:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Fleck;namespace TopoWebSocket{    class Program    {        static void Main(string[] args)        {            FleckLog.Level = LogLevel.Debug;            var allSockets = new List
(); var server = new WebSocketServer("ws://0.0.0.0:7181"); 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)); }; }); var input = Console.ReadLine(); while (input != "exit") { foreach (var socket in allSockets.ToList()) { socket.Send(input); } input = Console.ReadLine(); } } }}

注意要引用:using Fleck;这个在上面的链接里面已经提供了。代码都写好后,我们来运行下服务器端吧,客户端也可以,总之两个都运行好:如图:

现在你可以客户端向服务器端发送消息了,我们试试,输入你好世界:

然后我们再在服务器端发送消息给浏览器试试,如,HelloWorld

也成功了,呵呵,是不是很神奇,现在可以添加自己 的业务逻辑在里面了,是不是 觉得前后台通信变得简单了。

总结:

1、这个例子不是我写的,我只不过在github上拿过来给你们介绍,你们可以通过上面的例子fork下源代码,自己看看分析分析别人是怎么用的

2、如果有问题可以加群问我:464696550

 3、参考资料:http://www.ibm.com/developerworks/cn/java/j-lo-WebSocket/

转载地址:http://kkwnl.baihongyu.com/

你可能感兴趣的文章
[Android] 基于 Linux 命令行构建 Android 应用(六):Android 应用签名
查看>>
任务管理器进程中多个chrome.exe的问题
查看>>
pthread_join直接决定资源是否能够及时释放
查看>>
StoryBoard学习(5):使用segue页面间传递数据
查看>>
RelativeLayout经常使用属性介绍
查看>>
Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序...
查看>>
ajaxFileUpload文件上传
查看>>
Java凝视Override、Deprecated、SuppressWarnings具体解释
查看>>
C++学习笔记13-类继承
查看>>
修改以及设计好的表
查看>>
UML用例图总结
查看>>
八大排序算法
查看>>
在LINUX终端和VIM下复制粘贴
查看>>
IE开发人员工具手册
查看>>
【转】android是32-bit系统还是64-bit系统
查看>>
C 文件操作库函数总结
查看>>
CSS 清除浮动的几种方式
查看>>
[转]PHP: 深入pack/unpack
查看>>
外包:卡卡软件简要思路
查看>>
H264码流打包分析(精华)
查看>>