Fleck For Web Socket
效果图
(前沿).WebSocket是一种基于TCP/IP通讯一种新的通讯协议,它实现了服务器和客户端双工通讯,允许服务器主动发送给客户端.
(浏览器对Socket的支持) .
- 浏览器 支持情况 Chrome谷歌浏览器 Chrome version 4+支持
- Firefox火狐浏览器 Firefox version 5+支持
- IE微软浏览器 IE version 10+支持(我们一般win7自带的是IE11)
- Safari苹果浏览器 IOS 5+支持
- Android Brower安卓浏览器 Android 4.5+支持
服务器对Socket的支持
- 厂商 应用服务器 备注 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+支持 Jetty Jetty 7.0+支持
cs
using Fleck; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace socketDemo {class Program{static void Main(string[] args){//客户端url以及其对应的Socket对象字典IDictionary<string, IWebSocketConnection> dic_Sockets = new Dictionary<string, IWebSocketConnection>();//创建 WebSocketServer server = new WebSocketServer("ws://0.0.0.0:30000");//监听所有的的地址//出错后进行重启server.RestartAfterListenError = true;//开始监听server.Start(socket =>{socket.OnOpen = () => //连接建立事件 {//获取客户端网页的urlstring clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;dic_Sockets.Add(clientUrl, socket);Console.WriteLine(DateTime.Now.ToString() + "|服务器:和客户端网页:" + clientUrl + " 建立WebSock连接!");};socket.OnClose = () => //连接关闭事件 {string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;//如果存在这个客户端,那么对这个socket进行移除if (dic_Sockets.ContainsKey(clientUrl)){//注:Fleck中有释放//关闭对象连接 //if (dic_Sockets[clientUrl] != null)//{//dic_Sockets[clientUrl].Close();//} dic_Sockets.Remove(clientUrl);}Console.WriteLine(DateTime.Now.ToString() + "|服务器:和客户端网页:" + clientUrl + " 断开WebSock连接!");};socket.OnMessage = message => //接受客户端网页消息事件 {string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;Console.WriteLine(DateTime.Now.ToString() + "|服务器:【收到】来客户端网页:" + clientUrl + "的信息:\n" + message);};});Console.ReadKey();foreach (var item in dic_Sockets.Values){if (item.IsAvailable == true){item.Send("服务器消息:" + DateTime.Now.ToString());}}Console.ReadKey();//关闭与客户端的所有的连接foreach (var item in dic_Sockets.Values){if (item != null){item.Close();}}Console.ReadKey();}} }
html:
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head><meta charset="utf-8" /><title>WebSocket测试</title><style>.div1{height:88px; width:173px;border:1px solid blue;margin:auto;}h4{margin:auto;}</style><script>var webSocket = {};//创建websocktfunction CreateWebSocket() {webSocket = new WebSocket("ws://127.0.0.1:30000");webSocket.onopen = WebSokectOnOpen;webSocket.onmessage = WebSocketOnMessage;webSocket.onclose = WebSocketOnClose;};//建立连接事件function WebSokectOnOpen() {alert("已经打开连接!");webSocket.Send("WebSocketCreate Success!");};//监听事件function WebSocketOnMessage(event) {//监听来自客户端的数据 alert(event.data);};function WebSocketOnClose() {//监听来自客户端的数据 alert('和服务器断开连接');};//发送事件function WebSocketSendMsg() {//获取text中的值var text = document.getElementById("Text1").value;//发送到服务器 webSocket.send(text);}</script> </head> <body onload="CreateWebSocket()"><div class="div1"><input type="text" id="Text1" /><input type="button" onclick="WebSocketSendMsg()" value="发送数据" /></div> </body> </html>
Fleck For Web Socket相关推荐
- web socket 心跳包的实现方案
web socket 心跳包的实现方案05/30/2010 现在网络环境错综复杂,socket心跳包是获得健康强壮的连接的有效解决方案,今天,我们就在web socket中实现心跳包方案,是的,尽管我 ...
- Web Socket/Stomp——整合Spring Session【Header Token模式】解决方案
官方文档 https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket-stomp-au ...
- HTML 5 Web Socket:下一次Web通信革命揭幕,互联网营销
最近关于HTML 5 Web Socket的流言已经满天飞,它通过Web上的一个单一Socket定义了一个全双工通信信道,HTML 5 Web Socket并不是普通HTTP通信的增强版,它代表着一个 ...
- 使用 ABAP 开发的一个基于 Web Socket 的小工具,能提高程序员日常工作效率
程序员区别于其他岗位的一个优势是,我们可以充分利用自己掌握的编程语言,将平日一些琐碎的,重复的日常工作,通过代码来实现自动化,从而省下更多的时间来投入到技术含量更高的工作中,提高工作效率. 本文介绍一 ...
- TCP和Web Socket混合使用的一个例子
用户在输入框里输入字符串: web socket从浏览器收到用户输入,转发给Orchestra 第三步orchestra收到Web Socket server发过来的数据,准备广播给state mac ...
- TCP socket和web socket的区别
小编先习惯性的看了下某中文百科网站对Web Socket的介绍,觉得很囧.如果大家按照这个答案去参加BAT等互联网公司的前端开发面试,估计会被鄙视. 还是让我们阅读一些英文材料吧. 让我们直接看sta ...
- 如何使用Chrome开发者工具调试web socket应用
使用Chrome开发者工具,web socket应用的调试显得异常方便. 打开Chrome开发者工具,切换到network标签页,选择Filter,根据WS过滤, 刷新我们的web socket应用, ...
- 轮询、长轮询与Web Socket的前端实现
Web Socket 应用场景:实现即时通讯:如股票交易行情分析.聊天室.在线游戏等,替代轮询和长轮询 轮询 轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由 ...
- Jmeter对Web Socket进行压力测试 —— 200人直播课实战经验
转载 Jmeter对Web Socket进行压力测试 -- 200人直播课实战经验 分类专栏: Jmeter 测试经验 Web Socket 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...
最新文章
- 如何处理Entity Framework中的DbUpdateConcurrencyException异常
- Java OkHttp3的简单使用
- Hadoop,Yarn,Zookeeper,kafka数据仓库集群命令集合
- createmutex创建的锁需要手动关闭句柄吗_你知道吗?汽车的儿童锁居然还能发挥这么大的作用!...
- 动态规划训练17 [Super Jumping! Jumping! Jumping! HDU - 1087 ]
- (计算机组成原理)第三章存储系统:本章习题
- ThinkPHP5 助手函数
- 哇撒!这几个SpringBoot前后端分离项目(附源码),star过千,快去收藏夹吃灰吧。。。
- Windows:定时/进程结束执行命令
- CodeForces - 786B Legacy (线段树+DIjkstra+思维)
- linux查看串口驱动
- 开发跨境电商/外贸商城网站需要考虑的事项
- 大学物理-热学-教学总结
- 【业务安全02】业务数据安全
- android停止蓝牙音乐服务,蓝牙音乐播放状态一直为暂停态
- 去APP Store评分撰写评论方案
- stm32专题二十五:基本定时器原理
- 【Codeforces 549F】Yura and Developers | 单调栈、启发式合并、二分
- 编译安装php时遇到virtual memory exhausted: Cannot allocat
- 【Vue】Vue中mixins的使用方法及实际项目应用详解