WebSocket是html5的一种协议,那么就表示要使用websocket客户端的浏览器就要支持html5。

对于不支持的使用flash去解决。

Fleck源码地址

服务端采用的是Fleck,Fleck的好处就是简单方便,作者已经进行了完整的封装,可以根据自己情况进行修改

兼容低版本IE

使用flash实现兼容低版本IE

websocket 连接集合

using Fleck;
using System.Collections.Generic;namespace Common
{public class FlectWebSock{public static List<IWebSocketConnection> sockets = new List<IWebSocketConnection>();}
}

在启动时创建 WebSocketServer服务

        protected void Application_Start(){AreaRegistration.RegisterAllAreas();WebApiConfig.Register(GlobalConfiguration.Configuration);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);FleckWebSocket();}public void FleckWebSocket(){/*与网站的端口号不一致,与websocket地址的端口号保持一致*/var socketServer = new WebSocketServer("ws://0.0.0.0:58349");/*发生错误自动重启*/socketServer.RestartAfterListenError = true;socketServer.Start(socket =>{socket.OnOpen = () =>{FlectWebSock.sockets.Add(socket);};socket.OnClose = () =>{FlectWebSock.sockets.Remove(socket);};socket.OnMessage =Message => {FlectWebSock.sockets.ForEach(x => x.Send(Message));};});}

简单的页面

   怎么称呼您?<input type="text" value="张三" id="userName" /><br />您要说什么?<input type="text" id="Message" /><input type="button" value="发送" onclick="Send()" /><br /><input type="button" value="连接" onclick="Connect()" /><input type="button" value="关闭" onclick="Close()" /><div id="content"></div>

简单的样式

  #content{height:400px;overflow-y:auto;width:500px;}

前端js

<!--兼容低版本IE方案的JS--><script src="~/Script/webSocket_js/swfobject.js"></script><!--兼容低版本IE方案的JS--><script src="~/Script/webSocket_js/web_socket.js"></script><script type="text/javascript">var _WebSocket;/*兼容低版本IE方案的SWF地址*/WEB_SOCKET_SWF_LOCATION = "/Script/webSocket_js/WebSocketMain.swf";/*兼容低版本IE方案,调试信息*/WEB_SOCKET_DEBUG = true;function Connect() {if (_WebSocket != null) {switch (_WebSocket.readyState) {case _WebSocket.CLOSED: Open(); break;default: alert("无法操作!"); break;}} else {Open();}}function Open() {/*websocket地址端口号*/_WebSocket = new WebSocket("ws://localhost:58349");_WebSocket.onopen = function () {alert("连接成功!");}_WebSocket.onmessage = function (socket) {var p = document.createElement("p");p.innerHTML = socket.data;document.getElementById("content").appendChild(p);}_WebSocket.onclose = function () {alert("关闭成功!");}}function Send() {/*发送消息*/_WebSocket.send(DateNow() + " " + document.getElementById("userName").value + ":" + document.getElementById("Message").value);}function Close() {_WebSocket.close();}function DateNow(){var time=new Date();return parseInt(time.getFullYear())+"-"+time.getMonth()+"-"+time.getDate();}</script>

效果图

如果有错误,欢迎指出!相互学习共同进步

[c#]使用Fleck实现简单的WebSocket含兼容低版本IE相关推荐

  1. Fleck实现简单的Websocket

    服务端: using Fleck; using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  2. 使用SpringBoot搭建一个简单的webSocket服务

    前言 个人地址:使用SpringBoot搭建一个简单的webSocket服务 什么是WebSocket? WebSocket是一个HTML5新增的协议,它的目的在浏览器和服务器之间建立一个不受限的双向 ...

  3. 用 Go 编写一个简单的 WebSocket 推送服务

    用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhon- 获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息都是通过短信,微 ...

  4. 如何用 Node.js 实现一个简单的 Websocket 服务?

    最近正在研究 Websocket 相关的知识,想着如何能自己实现 Websocket 协议.到网上搜罗了一番资料后用 Node.js 实现该协议,倒也没有想象中那么复杂,除去注释语句和 console ...

  5. 五子棋游戏Java代码简单实现(含活动图和类图设计)

    五子棋游戏Java代码简单实现(含活动图和类图设计) 文章目录 五子棋游戏Java代码简单实现(含活动图和类图设计) 活动图设计 类图设计 代码实现 总结 OOA和OOD设计 代码设计 可改进部分 活 ...

  6. 浏览器控制台简单测试websocket接口收发

    浏览器控制台简单测试websocket接口收发 打开一个网页 F12打开控制台 ws = new WebSocket('ws://121.40.165.18:8800'); 或者 ws = new W ...

  7. 基于Netty最简单的WebSocket通讯

    基于Netty最简单的WebSocket通讯 基于Netty最简单的WebSocket通讯 总览 服务端 EasyWsServer EasyWsServerHandler 客户端 EasyWsClie ...

  8. 使用libwebsockets搭建一个简单的websocket服务器

    本文讲解如何开发一个简单的WebSocket服务器 如果你嫌这两个例子都太简单了,且想了解更多更深的websocket的工作原理, 可以看这篇文章:http://lucumr.pocoo.org/20 ...

  9. 多种形貌氧化锌ZnO纳米片、纳米棒、纳米线、纳米管的合成简单介绍(含电镜图)

    多种形貌氧化锌ZnO纳米片.纳米棒.纳米线.纳米管的合成简单介绍(含电镜图) 西安齐岳生物专业供应各种各种形态.维数的ZnO纳米材料,多种形貌包括纳米氧化锌(ZnO)纳米线.(ZnO)纳米棒.ZnO氧 ...

最新文章

  1. 使用unix工具监控cpu、内存等系统资源占用率
  2. ETL 工具下载全集 包括 Informatica Datastage Cognos( 持续更新)
  3. 汇编指令---CDQ
  4. /scripts/checkkconfigsymbols.sh
  5. [转载]出了国才明白的10件事~(MITBBS ZT)
  6. jdk卸载不干净怎么办_雨刮器“刮不干净”怎么办?老司机:用这招,分分钟解决!...
  7. 二进制_简单了解二进制
  8. SharePoint Server 2016 PWA(Project web app) 被变为只读模式
  9. linux登录后自动打开终端,linux登录信息/打开终端信息
  10. POJ 1789(最小生成树)
  11. java反编译工具jd-gui
  12. 关于Vue页面JS+JQ无法调用页面方法与data
  13. Adobe产品在Lion上的已知问题
  14. Linux命令详解词典
  15. KD树(网易游戏笔试)
  16. 计算机毕业设计django基于python仓库管理系统(源码+系统+mysql数据库+Lw文档)
  17. 燕秀工具箱图库lisp_AutoCAD模具设计插件燕秀工具箱 v2.81版(64/32bit)
  18. 手写字体识别实验-Python课程设计
  19. 油猴+百度网盘+加速
  20. 最大值最小值计算机一级,Excel2019中突出数据最大值和最小值的方法详解

热门文章

  1. ffmpeg设置h264编码IDR间隔
  2. 如何用python绘制等边三角形_python叠加等边三角形的代码编写方法
  3. 推荐系统 | 基础推荐模型 | 逻辑回归模型 | LS-PLM | PyTorch实现
  4. 惠普m154a状态页_惠普M154a说明书
  5. [BZOJ]1059: [ZJOI2007]矩阵游戏
  6. macbook air未能与服务器,少量2018款Macbook Air存在问题:苹果已通知维修但并未告知详细情况...
  7. vuejs v-bind给元素添加属性
  8. python资产负债表_用Python清理雅虎财务资产负债表
  9. Flume+kafka+Spark Steaming demo2
  10. Best practices for a new Go developer