123

$("#1").html("456");结果是:

456

$("#1").append("");结果是:

123

"> 简单实现一个Websocket服务 - 11GX
首页 > 简单实现一个Websocket服务

简单实现一个Websocket服务

WebSocket是HTML5里提供的一种便于TCP长连接通讯的协议机制,随着HTML5的普及这种技术的使用会变得越来越广泛,由于Beetle可以灵活地扩展不同的协议,那自然而然对WebSocket支持也是一件非常简单的事情.对于WebSocket的协议分析处理就不详细描述可以参考下载程序有完整协议包代码,如果想更详细了解Websocket的协议可以到这里:http://datatracker.ietf.org/doc/rfc6455/?include_text=1 

下面讲述如何使用Beetle非常方便地实现一个基于WebSocket的Hello wold程序.

服务端代码

    class Program:WebSocketServer{static void Main(string[] args){TcpUtils.Setup("beetle");Program server = new Program();server.Open(8088);Console.WriteLine("websocket start@8088");System.Threading.Thread.Sleep(-1);}protected override void OnConnected(object sender, ChannelEventArgs e){base.OnConnected(sender, e);}protected override void OnDisposed(object sender, ChannelDisposedEventArgs e){base.OnDisposed(sender, e);}protected override void OnError(object sender, ChannelErrorEventArgs e){base.OnError(sender, e);}protected override void OnWebSocketReceive(TcpChannel channel, DataPackage e){Console.WriteLine("MessageType:{0}", e.Type);Console.WriteLine("RequestPath:{0}", e.RequestPath);if (e.Type == PackageType.text){Console.WriteLine(e.ToString());DataPackage dp = new DataPackage();dp.Type = PackageType.text;dp.Data.Encoding("hello " + e.ToString(), Encoding.UTF8);channel.Send(dp);}}}

以上就是一个完整的websocket服务,代码非常简单WebSocketServer重写OnWebSocketReceive即可,在事件中根据需要处理对应的DataPackage即可,对于DataPackage的结构和类型实现参考下载代码.

Html代码



WebSocket Test


WebSocket hello wold

Server url:

Enter you name:

Result:

运行效果

这样一个基于Hello wold的Websocket处理程序就完成.如果对Websocket感兴趣的朋友可以下载源代码了解websocket协议分析的原理,如何从byte[]分析出对应的websocket协议.

下载代码

更多相关:

  •   /*禁止缩放safari浏览器*/ var scale = {disabledSafari: function () {/* 阻止双击放大*/var lastTouchEnd = 0;document.addEventListener("touchstart", function (event) {if (event.touch...

  •   $g.$utils = {/**舒工Ajax-lite 1.0 -- 最精简的ajax自定义访问方法*/ajax: function (o) {var p = o.post, g = o.get, d = p.data, a = p.async, J = 'json', j = p[J], s = g.success, e =...

  •   Sg.js框架核心概念: 1)所有变量、方法、类对象全部都是从属于$g主树,由$g分支出很多$g.变量名、$g.方法、$g.对象id、$g.类;2)获取控件内部属性必须使用公开的get方法获取,禁止直接用访问内部变量方式来获取控件内部变量、属性值;3)修改控件内部属性、绑定方法等都必须使用公开的set方法来操作,禁止直接用访问...

  •  一、ios header导航栏被推起解决方法 1 设置弹出软键盘时自动改变webview的高度 plus.webview.currentWebview().setStyle({ softinputMode: "adjustResize" // 弹出软键盘时自动改变webview的高度 }); 2 增加样式 html...

  • 前端发送Ajax请求到服务器,服务器返回数据这一过程,因原因不同耗时长短也有差别,且这段时间内页面显示空白。如何优化这段时间内的交互体验,以及长时间内服务器仍未返回数据这一问题,是我们开发中不容忽视的重点。 常见的做法是: 1、设置超时时间,一旦时间超过设定值,便终止请求;2、页面内容加载之前,手动增加一个 loading 层。 代码...

  • jquery倒计时插件设置多个自定义倒计时时间,任意设置天、小时、分钟、秒倒计时间功能。 查看演示>>

  •   前段时间工作中碰到有需求,要求数据按下图所示格式来显示,当时在园子里看到了一篇文章(时间久了,想不起是哪一篇),研究了后做出了如下的DEMO,在此当作学习笔记,简单记录一下。   首先是效果图,如下:   数据库临时建的DEMO表,如下:       前台代码,如下:

  • append是追加,html是完全替换比如

    123

    $("#1").html("456");结果是:

    456

    $("#1").append("");结果是:

    123

    ...