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

 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-12-20 13:36:02

高效简易开发基于websocket 的通讯应用的相关文章

Websocket全讲解。跨平台的通讯协议 !!基于websocket的高并发即时通讯服务器开发。

本博文,保证不用装B的话语和太多专业的语言,保证简单易懂,只要懂JAVAEE开发的人都可以看懂. 本博文发表目的是,目前网上针对Websocket的资料太散乱,导致初学者的知识体系零零散散,学习困难加大.本博加以整理,并且实践. 所用核心技术选型: Tomcat + Spring 4.0.3 + Mongodb(高并发数据库) + SpringQueue(消息队列)+ ActiveMQ (消息队列) + Spring-data-Mongo + Servlet 3.0 +Spring-Websoc

高效简易websocket服务开发包beetle

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

MQTT是IBM开发的一个即时通讯协议,构建于TCP/IP协议上,是物联网IoT的订阅协议,借助消息推送功能,可以更好地实现远程控制

最近一直做物联网方面的开发,以下内容关于使用MQTT过程中遇到问题的记录以及需要掌握的机制原理,主要讲解理论. 背景 MQTT是IBM开发的一个即时通讯协议.MQTT构建于TCP/IP协议上,面向M2M和物联网IoT的连接协议,采用轻量级发布和订阅消息传输机制.Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用. 基本概念 [MQTT协议特点]——相比于RESTful架构的物联网系统,MQ

基于WebSocket协议的iOS端即时聊天

好好好久没有在cnblogs上写博客,不过在这里写的最早的一篇博客的时间戳,真是时间久远啊,那时候还没毕业.不在cnblogs的期间,在github pages.简书上写过博客,github pages的markdown还是不错的,不过百度不能检索到文章,也就是通过百度,永远无法导流搜索到我的文章(感动moving),简书感觉更适合抒情鸡汤,可能我不太能融入那个用户群体.不过现在我回来了,那些在github pages上的文章,我暂时也不迁移了,毕竟人生本来就不完美,提醒自己不能有强迫症(内心默

java SSM框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

获取[下载地址]   QQ: 313596790官网 http://www.fhadmin.org/A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都

java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯

A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势 D 集成安全权限框架shiro   Shiro 是一个用 Jav

java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技术:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid; 获取[下载地址]      数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面

聚合数据简易开发流程

聚合数据SDK简介 聚合数据SDK是一套基于Android/iOS开发的程序接口,目前已有Android.iOS版本.开发者可以使用该套SDK开发适用于Android/iOS系统移动设备的应用,通过调用SDK接口,可以轻松的访问聚合的所有数据和服务,构建功能丰富.交互性强的应用程序该SDK集成了平台上的大部分数据服务(除电商SDK.比价SDK.定位SDK外),开发者只需使用聚合SDK即可调用已经申请的数据,无需再针对不同数据编写程序,更方便用户快速开发. Android SDK V2.0 简易开

【企业框架源码】 SpringMVC mybatis or hibernate ehcache二级缓存maven非和maven版本【websocket即时通讯】

获取[下载地址]   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单;freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Drui