高效简易websocket服务开发包beetle

 websocket的主要是为了解决在web上应用长连接进行灵活的通讯应用而产生,但websocket本身只是一个基础协议,对于消息上还不算灵活,毕竟websocket只提供文本和二进制流这种基础数据格式.在实际应用则更偏向于对象消息的处理,而在这基础上更希望集成一系列的消息路由机制来解决消息处理上的问题.为了解决以上问题beetle针对websocket进行了一些高层次的封装,让服务端处理消息变得更简单灵活.以下通过不同的示例介绍Beetle websocket开发包的简易性.

hello world

这个示列是每个开发语言入门程序,这也通过这样一个示例来介绍如何使用beetle websocket这个组件.实现一个helloword这样一个websocket服务是一件非常简单的事情,具体代码如下

public class HelloServer:BaseServer
    {
        [Command("hello")]
        public void OnList(Beetle.Express.IChannel channel, string id, string command, JToken token)
        {
            string result = "hello " +token.ToString();
            Send(channel,id,command,result);
        }
    }

是不是非常简单,这样就是一个简单的websocket通讯服务,那启动这个服务只需要很简单的一句话即可

mChatServer = new WebChatServer();
            mChatServer.Open(9123);

这样就可以在9123这个端口开启服务.接下来web怎么调用呢?beetle同样针对websocket的js封装,所以在js调用这个服务非常简单.

<script type="text/javascript">
        var wsUri = "ws://127.0.0.1:9125/";
        function init() {
            websocket = new WSClient();
            websocket.onConnect = function (evt) { };
            websocket.onClose = function (evt) { };
            websocket.onReceive = function (evt) { };
            websocket.onError = function (evt) { };
            websocket.connect(wsUri);
            $(‘#cmdconnect‘).click(function () {
                websocket.send("hello", $(‘#txtName‘).val(), function (result, error) {
                    $(‘#txtResult‘).html(result);
                });
            });
        }
        window.addEventListener("load", init, false);
    </script>

经过封装后是不是和传统的处理要简单很多呢,以下是其运行效果.

一个基于websocket的hello world示例通过beetle非常简单就完成,不过实际中应用场并不会这么简单,下面通过beetle websocket包进行一个简单的数据查询应用场景.

数据查询

接下来要做的就是通过beetle websocket通讯包进行一个简单的数据分页查询应用.

public class DataServer:BaseServer
    {
        [Command("search")]
        public void Search(Beetle.Express.IChannel channel, string id, string command, JToken token)
        {
            int size = 10;
            int pageindex = token["pageindex"].ToObject<int>();
            SearchResult result = new SearchResult();
            result.Pages = mCustomers.Count / size;
            if (mCustomers.Count % size > 0)
                result.Pages++;
            for (int i = pageindex * size; i < mCustomers.Count; i++)
            {
                result.Items.Add(mCustomers[i]);
                if (result.Items.Count >= size)
                    break;
            }
            Send(channel, id, command, result);
        }
    }

代码是不是非常简单呢,那js的代码又如何呢?

function search() {
            websocket.send("search", { pageindex: pageIndex }, function (data, error) {
                $(‘#lstCustomer‘).empty();
                if (!pages) {
                    pages = data.Pages;
                    createPagination(data.Pages);
                }
                for (p = 0; p < data.Items.length; p++) {
                    item = data.Items[p];
                    createItem(item);
                }
            });
        }

        function createPagination(pages) {
            for (p = 0; p < pages; p++) {

                $(‘<li><a href="javascript:pageIndex=‘ + p + ‘;search()">‘ + (p + 1) + ‘</a></li>‘).appendTo($(‘#pagination‘));
            }
        }

        function createItem(item) {
            var html = ‘<tr>‘
                       + ‘<td>‘ + item.CustomerID + ‘</td>‘
                       + ‘<td>‘ + item.CompanyName + ‘</td>‘
                       + ‘<td>‘ + item.Address + ‘</td>‘
                       + ‘<td>‘ + item.City + ‘</td>‘
                       + ‘<td>‘ + item.Country + ‘</td>‘
                       + ‘<td>‘ + item.Phone + ‘</td>‘
                   + ‘</tr>‘;
            $(html).appendTo($(‘#lstCustomer‘));
        }

同样简单方便的代码就能完成一个基于websocket的数据分页查询

总结

通过以上示例你可以了解到通过beetle websocket的开发包,可以非常高效在web开发websocket通讯应用,如果你对这个通讯包事情兴趣可以到 https://github.com/IKende/websocket.samples 获取更多的示例(包括在线聊天室)

时间: 2024-10-23 05:57:23

高效简易websocket服务开发包beetle的相关文章

高效简易开发基于websocket 的通讯应用

websocket的主要是为了解决在web上应用长连接进行灵活的通讯应用而产生,但websocket本身只是一个基础协议,对于消息上还不算灵活,毕竟websocket只提供文本和二进制流这种基础数据格式.在实际应用则更偏向于对象消息的处理,而在这基础上更希望集成一系列的消息路由机制来解决消息处理上的问题.为了解决以上问题beetle针对websocket进行了一些高层次的封装,让服务端处理消息变得更简单灵活.以下通过不同的示例介绍Beetle websocket开发包的简易性. hello wo

移动互联网(一)短信和彩信界面开发包

参与这个项目,短信和彩信功能.它被认为是该项目的一个重要组成部分,如何开发这个功能以前认为.例如,有很多订单我们永和系统,怎样让用户及时知道自己卡里的消费情况?怎样让用户心中存在安全感,试想想在你的银行卡每次消费或者转入.转出每一笔款的时候都有短信提示,你是不是无意中添加了一份安全感呢? 大家在想想眼下的各类门户站点,以及我们经常使用的CSDN等论坛都提供有短信登录.以及短信验证码.短信注冊等等同短信沾边的业务内容,全部的这些都是一个思想提高系统灵活性.易用性.安全性,方便用户替用户考虑.全心全

3G手机视频对讲开发包

一.概述 针对3G网络研发的"手机视频对讲开发包",使人们在任何能够使用手机的地方都可以随时随地进行视频对讲.视频会议.应急视频指挥等,突破了传统固网的限制,是3G业务的革命性产品.该开发包已经通过了稳定性测试,是目前最完善的适合于大规模商用的3G视频应用开发包,填补了国内空白. 手机视频开发包可为3G用户提供视频监控和告警信息.远程采集.传输.存储.处理与传播等方面的无线网络视频服务,是一种有效的安防及管理工具:手机会议平台是为用户提供手机视频会议的定制.配置.使用的手机视频会议系统

深圳短信猫厂家自带短信猫开发包支持多种开发语言

深圳最早从事短信猫生产与销售的短信猫厂家-深圳百利通科技,是深圳短信猫厂家中质量上乘.服务周到的正规公司.提供有丰富短信猫开发软件包及接口程序,支持GSM MODEM短信猫二次开发,可广泛用于二次开发领域,将sms.dll文件拷贝到系统安装目录中的system32文件夹中,然后再根据以下接口函数说明和提供的例程源码开发.支持多种程序短信开发语言如:C#.delphi.VC++等,并提供有程序开发示例DEMO,方便参考.实现快速短信二次开发应用.多应用于如OA.ERP.用友.金蝶等办公系统的短信功

谷歌推出DAYDREAM开发包

<<< 谷歌推出Daydream开发包,VR应用爆发将至 >>> 2016年是虚拟现实元年,除了索尼.HTC和Oculus三大公司开发全功能头盔之外,不计其数的智能手机企业也推出了简易型头盔,希望能够在VR市场分一杯羹.在手机VR领域,野心勃勃的谷歌准备成为一家VR开发的标准制定企业.日前,谷歌面向VR开发准备的开发工具包"谷歌VR SDK 1.0"正式结束了测试期,面向所有虚拟现实开发者提供下载. 利用这一工具包,开发者可以面向所有符合Daydre

vmware开发包之vSphere Management SDK

原文地址:http://www.cnblogs.com/yuefei/p/3600441.html 原文写的挺好的,我这里增加了一些细节.来帮助像我这样的小白,明明按照说明来,可还是不对 准备: vSphere Management SDK Microsoft Visual Studio 2008 Web Services Enhancements (WSE) 3.0 for Microsoft .NET .net framework v2.0 sdk MicrosoftSqlServerSSt

使用ecstore-sdk开发包制作易开店和启明星模板

前言: 尽管商派官网有模板开发教程,但是诸多方面太过笼统.我等平庸之辈,纵使细心研读,潜心修炼,亦未能品味练功境界,领悟其中真谛. 商派有云,此九阳真经不用您挥刀****本人却感觉此教程令人抓狂,无人指点的话,着实无处下手的. 结合与商派客服数次沟通和自己的琢磨研究,终于掌握了使用使用ecstore-sdk开发包制作易开店和启明星模板的方法.现将此法分享给大家,希望能帮助大家尽快的掌握商派ecstore系列产品模板的制作方法. 使用范围: 本教程适合商派ecstore1.2系列产品模板制作,包括

支付宝钱包接口开发包2.0标准版接入与使用规则

接入与使用规则 支付宝钱包支付接口开发包 2.0 标准版 附录文档 版本号:1.3 支付宝(中国)网络技术有限公司 版权所有 支付宝钱包支付接口开发包 2.0 标准版附录文档 目录 1 文档说明..............................................................................................................4 1.1 文档说明...............................

USDT对接专用PHP开发包

OmniTool开发包适用于为PHP应用快速增加对Omni Layer/USDT数字资产的支持能力,即支持使用自有Omni Layer节点的应用场景,也支持基于第三方API服务和离线裸交易的轻量级部署场景.下载地址:omni/usdt php开发包 . 1.OmniTool开发包简介 OmniTool开发包主要包含以下特性: 完善的Omni Layer节点RPC封装 支持利用自有节点或第三方服务获取指定地址的utxo集合 支持离线生成omni代币转账裸交易 支持利用自有节点或第三方服务广播裸交易