Netty+MUI从零打造一个仿微信的高性能聊天项目,兼容iPhone/iPad/安卓
要说到微信,我相信是个人都应该知道,几乎人人都会安装这款社交APP吧,它已经成为了我们生活中不可缺少的一份子。
我记得我上大学那会刚接触Java,做的第一个小项目就是基于J2SE的聊天室,使用Java编写websocket异常麻烦,而且又是同步阻塞的,性能非常差。随后几年经过工作的历练,接触了netty,使用netty可以搭建一款高性能的服务器,他封装了很多api,也提供NIO 和 AIO,当然可以用来编写websocket。
其实我一直想着自己能不能开发一款APP,用于聊天,用于社交呢?苦于不会iOS和安卓,而且要开发多个不同手机端,开发成本太高了。后来接触了MUI,发现这个前端框架非常牛,可以说是最接近原生APP的UI框架了。
那么结合以上三点,我想咱们也能模仿微信来做一款简单的聊天app吧?随后就有了这套实战,我们通过下图简单了解一下课程大纲以及体验版内容

在看下图,其中包含了app的体验二维码,只不过是安卓版的,ios没有发布到appstore,不过也能从导学可以看到相应的演示。

整体实战内容分为5大块,简单说一下
1,netty入门,理解bio nio aio,理解netty三种线程模型。
2,搭建一个最简单的hello netty服务器,搭建一个websocket网页聊天小程序,可以使用户在web浏览器或者移动端浏览器进行消息的收发。
3,搭建移动端整体架构,完成通讯录开发,添加好友,个人信息页面开发等
4,聊天业务开发与netty整合,涉及到相关业务细节方面的处理。心跳机制,使用netty保持后端心跳,当然前端也要根据业务保持一定的keepalive
5,项目打包上线到云服务器,app云打包与安装测试
其实还有一点,就是推送,我们会整合个推推送,实现添加好友,通过好友请求以及用户离线消息的推送,不过这块内容后续会以免费课的形式推出噢~(大家可以关注~)
可能有小伙伴会问,要兼容多端,是不是很难?需要哪些技能储备?需要会ios和安卓吗?
其实大家多虑了,
前端: html css JavaScript,js方面只需要会原生的即可,当然你会jQuery vue等那就锦上添花啦~
后端: Javaweb ssm基础 springboot基础 mysql 以及linux
很简单吧~
看得出来,老师的课程都是以全栈为主,包括老师之前的一套仿抖音全栈实战(https://coding.imooc.com/class/217.html)也是如此,为啥要推动全栈呢?
1、首先,在有些公司,开发一个app,需要两个手机端,一个后端,一个运维,这是最少的配备,人力成本是老板必须要考虑的事,当然,如果前后端以及运维你都会了,为老板节省了成本,你的薪水也能上升啊!同样你的个人竞争力就更加体现了,不是么?
2、现在很多企业的不同产品线都会有聊天的业务,主要提供给用户和客服人员的沟通,学完以后当你遇到类似的聊天业务时,就能从容面对了吧
3、接私活,很多程序员都会接私活,包括老师我也是,现在的私活不像几年前那么简单了,几乎都需要全栈,学完咱们这套实战啊,你就可以迈向个人开发者了,以后的零花钱啊也不用发愁喽~甚至当你有想法的时候创业也是OK的!
4、假设你正好要做一个高大上的毕业设计,普通的毕设可能并不能忽悠导师,那么这个时候你就不用愁了,学完以后做个惊艳同学和你导师的作品吧
5、很多人认为云服务器这玩意很难,惧怕,而且需要linux基础,那么不用怕,课程中会手把手把你项目部署到腾讯云服务器,从此不再惧怕项目发布和上线
6、有助于面试,现在面试往往到最后都会问你了解netty吗,谈一谈聊一聊netty,很多人惧怕netty也不了解netty而失去了offer,如果你面试的时候,能够拿出这样的一个项目给面试官看,从零到上线的过程大致讲一遍,再聊一聊netty是怎么用的,那么企业基本都会要你,我是面试官的话也是如此,大大增加了你的个人竞争力
7、未来职业规划。做全栈,对于你未来的职业路径也是非常好的非常重要的,为什么?等你到4-50岁的时候你还是做开发吗?国内外的互联网环境是不一样的,你要往技术总监的位置靠拢吧?!如果你不是全栈,那你凭什么做总监?对于技术规划,解决方案,什么业务该用什么技术,技术的好坏等等选择择都需要经过你来抉择,如果你仅仅只会后端或者只会前端,那么你的不足之处会有另外的人来弥补。如果你是从全栈一路走来的,那么你的权利会非常大,老板也会听你的,他的耳边不会有第二种声音。所以不管是现在还是未来,全栈的可发展性可持续性越来越大,不然为什么国外的开发者这么喜欢全栈呢?
既然这么有用,那学起来难吗?其实不难吧,老师是手把手带着你一步步实现的~
此外,除了实战内容以外,老师还提供了额外的课程彩蛋,都是老师之前录制的哈,都是为了大家能够更好的学习到技能,相关课程如下:
1. linux基础; 2. MUI基础入门 3. shiro权限入门 4. 微信/支付宝支付 等~,这些老师都会提供给大家噢~
另外springboot入门与整合的免费课程之前也已经上线:https://www.imooc.com/learn/956
那么最后,还是祝大家能够学习到自己想要的技能,提高个人竞争力,课程已经上线,地址如下: https://coding.imooc.com/class/261.html
Netty+MUI从零打造一个仿微信的高性能聊天项目,兼容iPhone/iPad/安卓的更多相关文章
- 【前端新手也能做大项目】:跟我一起,从零打造一个属于自己的在线Visio项目实战【ReactJS + UmiJS + DvaJS】(二)
本系列教程是教大家如何根据开源js绘图库,打造一个属于自己的在线绘图软件.当然,也可以看着是这个绘图库的开发教程.如果你觉得好,欢迎点个赞,让我们更有动力去做好! 本系列教程重点介绍如何开发自己的绘图 ...
- 仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]
本文为原创分享,转载请注明出处. 1.引言 即时通讯IM应用中的聊天消息时间显示是个再常见不过的需求,现在都讲究用户体验,所以时间显示再也不能像传统软件一样简单粗地暴显示成“年/月/日 时:分:秒”这 ...
- 40.qt quick- 高仿微信实现局域网聊天V4版本(支持gif动图表情包、消息聊天、拖动缩放窗口)
在上章37.qt quick- 高仿微信实现局域网聊天V3版本(添加登录界面.UDP校验登录.皮肤更换.3D旋转),我们已经实现了: 添加登录界面. UDP校验登录. 皮肤更换. 3D旋转(主界面和登 ...
- 一、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-项目引言
项目文章索引 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展面板的 ...
- Svelte3.x网页聊天实例|svelte.js仿微信PC版聊天svelte-webchat
基于Svelte3+SvelteKit+Sass仿微信Mac界面聊天实战项目SvelteWebChat. 基于svelte3+svelteKit+sass+mescroll.js+svelte-lay ...
- 打造一个高逼格的android开源项目——小白全攻略 (转)
转自:打造一个高逼格的android开源项目 小引子 在平时的开发过程中,我们经常会查阅很多的资料,最常参考的是 github 的开源项目.通常在项目的主页面能看到项目的简介和基本使用,并且时不时能看 ...
- angular版聊天室|仿微信界面IM聊天|NG2+Node聊天实例
一.项目介绍 运用angular+angular-cli+angular-router+ngrx/store+rxjs+webpack+node+wcPop等技术实现开发的仿微信angular版聊天室 ...
- 【前端vue进阶实战】:从零打造一个流程图、拓扑图项目【Nuxt.js + Element + Vuex】 (一)
本系列教程是用Vue.js + Nuxt.js + Element + Vuex + 开源js绘图库,打造一个属于自己的在线绘图软件,最终效果:topology.le5le.com .如果你觉得好,欢 ...
- 从零打造一个Web地图引擎
说到地图,大家一定很熟悉,平时应该都使用过百度地图.高德地图.腾讯地图等,如果涉及到地图相关的开发需求,也有很多选择,比如前面的几个地图都会提供一套js API,此外也有一些开源地图框架可以使用,比如 ...
随机推荐
- 推箱子 HDU1254 (bfs)
较难的bfs 有两种方法做 一种双重bfs: 主bfs是箱子 还要通过dfs判断人是否能到箱子后面 用inmap函数的好处.. 箱子要用三位数组来标记 因为箱子可以回到原来到过的地方 因为推的 ...
- 048 hive运行的相关配置
一:执行SQL的方式 1.配置的键值 2.minimal下运行fetch 3.设定hive.fetch.task.conversion=more 4.在more下运行fetch 二:虚拟列 一共三个虚 ...
- Selenium3 + Python3自动化测试系列二——selenium元素定位
一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...
- SystemTap - 安装
按照SystemTap Beginners Guide的Installation and Setup部分安装了SystemTap,没想到竟然还有点曲折,在这里纪录一下. 环境 Linux发行版本:Ce ...
- python单元测试模块unittest
1.unittest_demo.py # coding=utf-8 import time import unittest from HtmlTestRunner import HTMLTestRun ...
- AGC015 C-Nuske vs Phantom Thnook AtCoder 思路 前缀和
目录 题目链接 题解 代码 题目链接 AGC015 C-Nuske vs Phantom Thnook AtCoder 题解 树的性质有: 如果每个蓝色连通块都是树,那么连通块个数=总点数−总边数. ...
- 11.7 NOIP模拟赛
目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...
- #1075 : 开锁魔法III
描述 一日,崔克茜来到小马镇表演魔法. 其中有一个节目是开锁咒:舞台上有 n 个盒子,每个盒子中有一把钥匙,对于每个盒子而言有且仅有一把钥匙能打开它.初始时,崔克茜将会随机地选择 k 个盒子用魔法将它 ...
- python面向对象编程练习
练习题 1.面向对象三大特性,各有什么用处,说说你的理解. 面向对象的三大特性: 1.继承:解决代码的复用性问题 2.封装:对数据属性严格控制,隔离复杂度 3.多态性:增加程序的灵活性与可扩展性 2. ...
- 一款功能强悍的web磁盘管理工具 (A powerful web disk management tools)
https://github.com/kingAnyWHere/web-ftp web-ftp 一款功能强悍的web磁盘管理工具 (A powerful web disk management too ...