要想轻松驾驭t-io,提高编程效率,学习示范工程很重要

爱写码
• 阅读 728

t-io作为国内知名的开源网络编程框架,受到业界的广泛赞誉和使用,要一个想要学习或者想要使用t-io的人员,最快的了解t-io的方法就是学习t-io相关的工程文档,主要包含五个部分: tio-study工程 tio-websocket-showcase工程 tio-http-server-showcase工程 tio-udp-showcase工程 tio-websocket-client 工程 具体请参考:https://www.wanetech.com/doc/tio/124 分别介绍如下: tio-study工程简介 用于学习t-io的示范工程,目前包含3个工程:Hello world、Showcase、IM 下面分别对这三个工程进行讲解 一、helloworld helloworld是入门t-io最好的方式!而作者也是用心写了一个对生产项目有参考价值的hello tio,而不是仅仅是show hello而hello 在以前没有文档的日子,t-io第一批用户就是通过这个工程掌握t-io的 服务器端入口程序:org.tio.study.helloworld.server.HelloServerStarter 客户端入口程序:org.tio.study.helloworld.client.HelloClientStarter 本例子演示的是一个典型的TCP长连接应用,大体业务简介如下。

分为server和client工程,server和client共用common工程 服务端和客户端的消息协议比较简单,消息头为4个字节,用以表示消息体的长度,消息体为一个字符串的byte[] 服务端先启动,监听6789端口 客户端连接到服务端后,会主动向服务器发送一条消息 服务器收到消息后会回应一条消息 之后,框架层会自动从客户端发心跳到服务器,服务器也会检测心跳有没有超时(这些事都是框架做的,业务层只需要配一个心跳超时参数即可) 框架层会在断链后自动重连(这些事都是框架做的,业务层只需要配一个重连配置对象即可) 客户端界面 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 服务器端界面 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 二、showcase showcase工程用于进一步掌握t-io,甚至可以用作你项目的脚手架(@精灵007 同学已经用这个工程完成了3个项目) 这里有一篇博客,可以参考:ShowCase设计分析 服务器端入口程序:org.tio.study.showcase.server.ShowcaseServerStarter 客户端入口程序:org.tio.study.showcase.client.ShowcaseClientStarter 客户端界面 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 服务器端界面 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 三、IM im项目在1.7.0版本前一直都开放的,考虑到im的复杂性,这会给作者带来一些额外的咨询工作,所以在后面的版本没有放出来,现在重新放出来 j-im项目是在本项目的基础上改造而来的,有兴趣的可以看看j-im最早的fork版本 服务器端入口程序:org.tio.study.im.server.starter.ImServerStarter 客户端入口程序:org.tio.study.im.client.starter.ImClientStarter 看看爆裂的性能数据吧 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 tio-websocket-showcase工程简介 引言 tio-websocket-server是基于tio-core实现的websocket服务器,自带t-io提供的各项API以及一流的性能和稳定性 tio-websocket-showcase工程简介 用于学习tio-websocket-server的示范工程 包括wss和流量监控及处理等高级特性 还包括t-io作者写的一个用于连接websocket服务器的js小框架——tiows.js(内置断链重连、定时主动发心跳等功能,使用API极其简单) 效果图 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 学习步骤 把工程以maven的形式导入到eclipse后 修改\src\main\resources\page\im.js,把127.0.0.1改成你自己的ip地址(如果只是本机访问,可以不用修改) 运行org.tio.showcase.Starter 用chrome打开http://127.0.0.1/index.html(说明:本工程不仅会启动websocket服务器,还会启动一个http服务器用于访问websocket服务器) 这是个用iframe嵌入了两个im.html的页面,方便在一个窗口查看群聊效果 可以愉快地聊天了 说明 服务器端,大家看代码就好,用起来比较简单 客户端(js),page/tio/tiows.js是和业务无关的websocket js小框架,主要是实现了重连、定时发心跳等和业务无关的功能 tio-http-server-showcase工程 引言 tio-http-server是基于tio-core实现的http服务器,自带t-io提供的各项API以及一流的性能和稳定性 tio-http-server-showcase工程简介 用于学习tio-http-server的示范工程 入口程序 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 控制器 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 启动成功日志 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 访问 用浏览器打开:http://127.0.0.1 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 tio-udp-showcase工程 引言 tio-udp是包含在tio-core的一个功能子集 tio-udp-showcase工程简介 用于学习tio-udp-server的示范工程 学习步骤 把工程以maven的形式导入到eclipse后 运行org.tio.showcase.udp.server.ShowcaseUdpServerStarter启动udp服务器,启动成功后,日志如下 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 运行org.tio.showcase.udp.client.UdpClientStarter 观察服务器端的console,会看到如下日志 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 整个工程才3个类,简单到极致 tio-websocket-client 工程 tio-websocket-client的API风格接近浏览器端的WebSocket API 1、引用dependence,如maven: 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 2、创建WebSocket Client: 调用WsClient.create方法创建WsClient: 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 additionalHttpHeaders将添加到HTTP握手包的Header中,主要用于添加token等鉴权行为 例如: 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 3、调用client.connect()连接到服务器 4、像前端一样使用WebSocket 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要 使用https://www.websocket.org/echo.html的echo服务的完整示例: 要想轻松驾驭t-io,提高编程效率,学习示范工程很重要

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这