成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何做一個(gè)自己的開源聊天項(xiàng)目?(仿微信)

Zachary / 2561人閱讀

摘要:一個(gè)輕量級(jí)高效率的支持聊天與物聯(lián)網(wǎng)的通訊框架從月初到現(xiàn)在已經(jīng)大約已經(jīng)三個(gè)月了,由于一直沒有時(shí)間與精力很好的維護(hù)這個(gè)項(xiàng)目,心里一直有所歉意。希望本項(xiàng)目對(duì)你有所幫助,我的目標(biāo)暫定,一個(gè)小眾加物聯(lián)網(wǎng)的開源通訊項(xiàng)目。

篇幅較長(zhǎng),感謝閱讀。
萬事開頭難

在我決定做開源是因?yàn)樽陨砉ぷ鹘佑|到大多數(shù)的項(xiàng)目都是基于開源大佬寫的框架,自覺慚愧,工作以來一直忙于業(yè)務(wù)與功能實(shí)現(xiàn),多多少少做過的幾個(gè)項(xiàng)目也沒能抽出部分好一點(diǎn)的功能業(yè)務(wù)Maven包什么的提供也同行使用或借鑒,這實(shí)在是有悖于自己的初心。

決定做開源是今年(2018)7月末的時(shí)候,自己曾做的一個(gè)Iot項(xiàng)目剛剛被幾個(gè)網(wǎng)上的朋友問到,并尋求源碼,那么久做了一個(gè)Demo,并放到了GitHub上。

之后感覺應(yīng)該做一個(gè)有自己情感注入的項(xiàng)目才行,而不是工作上的現(xiàn)實(shí)交易的項(xiàng)目,我想做一個(gè)屬于自己的項(xiàng)目,有意義的項(xiàng)目。

當(dāng)時(shí)還在創(chuàng)業(yè)階段,給自己的時(shí)間也不多,所以能想到做什么也確實(shí)是想法有限,更重要的是時(shí)間也有限。

謝謝一個(gè)人,讓我有了一個(gè)Idea去做一個(gè)項(xiàng)目,她經(jīng)常說工作后什么話都不能輕易說,偶爾沒有自己的空間去抒發(fā)自己的情緒,當(dāng)時(shí)想到的是做一個(gè)個(gè)人樹洞的東西,但是那有點(diǎn)產(chǎn)品性,且有點(diǎn)不好給同行們借鑒。而我在創(chuàng)業(yè)時(shí)也剛剛好接觸到netty,之后用netty做了一個(gè)Iot物聯(lián)網(wǎng)項(xiàng)目,現(xiàn)在想到就是順便提升自己的能力,將netty運(yùn)用并熟悉掌握起來,做一個(gè)聊天室吧,一開始想法局限,就是一個(gè)在線聊天室。

初始項(xiàng)目演進(jìn)

沒錯(cuò),一開始就是一個(gè)項(xiàng)目式的形式,我很快的完成了一個(gè)聊天的功能,并打了一個(gè)tag包?,F(xiàn)在的地址是:demo。
下載地址:demo

1.0.0版本詳情介紹

我實(shí)現(xiàn)了用戶登錄、聊天歷史、隨機(jī)用戶名、異步數(shù)據(jù)寫入等基本功能。
登錄是隨機(jī)分配的用戶名,聊天數(shù)據(jù)會(huì)緩存本地,channel斷開(用戶離線的時(shí)候就執(zhí)行異步任務(wù)去存儲(chǔ)數(shù)據(jù),在登錄界面時(shí)就讀取數(shù)據(jù)庫(kù)數(shù)據(jù))


1.2.0版本

修復(fù)聊天記錄功能,實(shí)現(xiàn)重復(fù)信息錄入,完善前端頁面,回車監(jiān)聽等,對(duì)于前版本的本地緩存Map類型選用錯(cuò)誤,對(duì)重復(fù)數(shù)據(jù)無法存儲(chǔ)


1.3.0版本

用戶注冊(cè)登錄功能,系統(tǒng)聊天綁定用戶,禁止二次登錄等,前端頁面大改,用戶登錄后,id和channel一一對(duì)應(yīng),當(dāng)出現(xiàn)二次id登錄且channel不同時(shí),視為二次登錄。



1.4.1版本

本人主導(dǎo)SUI Mobile構(gòu)建仿微信樣式頁面版,使用時(shí)開F12手機(jī)界面,修改前端樣式。

1.5.2版本

TCP/IP軟硬件通信-單片機(jī)等應(yīng)用的TCP通信,Netty處理二進(jìn)制圖片發(fā)送聊天功能,前言說到的Iot物聯(lián)網(wǎng)項(xiàng)目的功能添加。

1.5.8 版本

MQTT協(xié)議軟硬件通信等,Iot物聯(lián)網(wǎng),這個(gè)暫時(shí)被提取為分支模塊。

1.6.0 版本

API調(diào)用Netty長(zhǎng)鏈接執(zhí)行發(fā)送消息(在線數(shù)、用戶列表)詳情地址

即可以以系統(tǒng)身份想在線channel發(fā)送數(shù)據(jù)。


到此,產(chǎn)品項(xiàng)目分支到一段落,到了這個(gè)時(shí)候項(xiàng)目已經(jīng)積累了十多個(gè)參與者(QQ群:628793702),在QQ群貢獻(xiàn)一些他們的建議與在工作中遇到的問題。

GitHub地址:InChat
A lightweight, efficient communication framework that supports chat and the Internet of Things(一個(gè)輕量級(jí)、高效率的支持聊天與物聯(lián)網(wǎng)的通訊框架)
分支開啟之路 paho-mqtt分支

感謝一個(gè)在成都的朋友提供的業(yè)務(wù)場(chǎng)景,需要小程序參與控制Iot物聯(lián)網(wǎng),并使用MQTT的場(chǎng)景。

本Demo是小程序端的Iot案例簡(jiǎn)單實(shí)現(xiàn)。

服務(wù)端配置

首先是配置修改,你可以在本分支的yml配置文件進(jìn)行mqtt的配置,核心的參數(shù)是:

ssl: false # 使用ssl加密

protocol: MQTT_WS_PAHO # MQTT MQTT_WS_MQTT(mqtts.js) MQTT_WS_PAHO(paho.js)

本項(xiàng)目使用的paho.js的mqtt連接形式,所以protocol要選擇MQTT_WS_PAHO。項(xiàng)目目前是未加密的,啟動(dòng)ssl本案例暫時(shí)不能通訊。
默認(rèn)直接啟動(dòng)項(xiàng)目就好。

項(xiàng)目啟動(dòng)后的地址 :ws://192.168.1.121:8094/mqtt

ws、與后綴mqtt是com.myself.nettychat.bootstrap.AbstractBootstrapServer.java中的配置

小程序配置

你需要小程序開發(fā)者工具,并默認(rèn)認(rèn)定你是具備基本的小程序開發(fā)經(jīng)驗(yàn)的開發(fā)者,這里省略部分的基本配置,你只需要將本分支中wechat-client文件夾中的文件完全復(fù)制到你新建的小程序項(xiàng)目即可,調(diào)試情況下無需AppID
你需要注意的是pages/connect/connect.js中的第78行

var client = new MQTT.Client("ws://" + this.data.server_addr+"/mqtt", "clientId_" + Math.random().toString(36).substr(2));

這里就是小程序的連接地址配置,默認(rèn)和項(xiàng)目啟動(dòng)的一致,你需要在小程序的連接頁面填寫你的
IP:端口

然后就連接成功了,接著你可以在subscribe頁面訂閱一個(gè)主題,本Demo是訂閱TEST。

Java模擬MQtt客戶端

運(yùn)行test中的com.myself.nettychat.MqttPublishSample,你需要修改成本機(jī)的配置,類似連接地址等

String broker       = "ws://192.168.1.121:8094/mqtt";//地址

需要注意的是,你的topic也要與小程序訂閱的主題一致哦!

運(yùn)行測(cè)試用例,模擬硬件發(fā)送信息


測(cè)試

回到小程序的message頁面,你可以看到接收到了消息

tcp-wechat 項(xiàng)目介紹

針對(duì)小程序與單片機(jī)硬件執(zhí)行Iot物聯(lián)網(wǎng)通訊(TCP/IP)的一套完整Demo。

啟動(dòng)流程

1、啟動(dòng)項(xiàng)目,tcp監(jiān)聽成功

2、運(yùn)行com.myself.nettychat.tcptest.TCPTestClient (記得先改ip或端口,如果你有修改的話)

3、運(yùn)行PostMan,請(qǐng)求下方的API 進(jìn)行通信測(cè)試

Demo場(chǎng)景

小程序端選購(gòu)售貨機(jī)中的商品,點(diǎn)擊購(gòu)買(小程序API向Iot中心發(fā)送對(duì)應(yīng)商品的開鎖信息),Iot中心中轉(zhuǎn)開鎖信息給單片機(jī),單片機(jī)接收信息打開對(duì)應(yīng)的鎖。

通信機(jī)制:幀頭+ID+數(shù)據(jù)類型+24把鎖狀態(tài)+crc校驗(yàn)+幀尾(可以按照需求進(jìn)行定制)

com.myself.nettychat.config.TCPServerHandler (通信接收的處理類)
API(小程序調(diào)用接口)
http://localhost:8080/susu/back/get_channel_size  GET

請(qǐng)求Iot中心,獲取當(dāng)前連接存活狀態(tài)下的鏈接實(shí)例

{
    "code": 200,
    "msg": "成功",
    "data": 1
}
http://localhost:8080/susu/back/get_channel_id_list  GET

請(qǐng)求Iot中心,當(dāng)前存活狀態(tài)下的鏈接Id列表

{
    "code": 200,
    "msg": "成功",
    "data": [
        "F5690137563CC8"
    ]
}
http://localhost:8080/susu/back/send_to_channel  POST

參數(shù)

channelId //第二個(gè)API獲取到的鏈接Id

lock //將要打開的第幾把鎖 1-24(看單片機(jī)接入的鎖的數(shù)量)

{
    "code": 200,
    "msg": "成功",
    "data": "【發(fā)送成功】"
}
im-api 簡(jiǎn)介

本項(xiàng)目為InChat核心項(xiàng)目,服務(wù)端項(xiàng)目,以API形式作為對(duì)外功能,類似騰訊IM的服務(wù)端作用,本文也將著重講解本項(xiàng)目的各個(gè)API,目前還沒有嵌入Iot通信模塊,僅以WebSocket的聊天室作為初期發(fā)展,需要使用到Iot的朋友可以先去Master項(xiàng)目了解。

swagger-ui

前端對(duì)接公告,目前推出API,請(qǐng)均已此文檔說明的為主,其余API非正式版或測(cè)試版,誤用
查看API列表

http://localhost:8080/susu/swagger-ui.html
API列表詳情

1、賬號(hào)注冊(cè)

POST  http://loclhost:8080/susu/user/to_register

參數(shù):username(用戶名)

參數(shù):password(密碼)

前端Tip:傳值判斷,參數(shù)均不能為空,密碼限制在前端做判斷

返回碼與信息值
返回碼 信息內(nèi)容 備注
200 成功
555 參數(shù)錯(cuò)誤
556 用戶名存在
提示

僅API列表詳情中的API處于可用狀態(tài),其余API請(qǐng)勿使用,暫未基本完成,使用請(qǐng)?jiān)斂次臋n

webrtc

一個(gè)基于WebRTC與netty相結(jié)合的語音與視頻流通訊項(xiàng)目。還在構(gòu)建中,,,

關(guān)于分支的想法

由于構(gòu)建為分支,是因?yàn)闀簳r(shí)不能全部融合在一起,很多場(chǎng)景暫時(shí)是獨(dú)立的,所以我針對(duì)朋友們的建議,構(gòu)建了不同的分支項(xiàng)目,并且竟可能的實(shí)現(xiàn)其要求的功能。

這些分支不會(huì)被拋棄,我會(huì)在后期將他們整理到真正的正版項(xiàng)目中去。

InChat雛形

感謝以上所有的沉淀!??!

項(xiàng)目現(xiàn)在已經(jīng)開始了重構(gòu)與業(yè)務(wù)代碼的抽離,我將把以上的功能全部抽成一個(gè)InChat-Maven包,并配合SpringBoot快速開發(fā)集成。

InChat
A lightweight, efficient communication framework that supports chat and the Internet of Things(一個(gè)輕量級(jí)、高效率的支持聊天與物聯(lián)網(wǎng)的通訊框架)

從8月初到現(xiàn)在已經(jīng)大約已經(jīng)三個(gè)月了,由于一直沒有時(shí)間與精力很好的維護(hù)這個(gè)項(xiàng)目,心里一直有所歉意。再次向每一個(gè)關(guān)注過InChat項(xiàng)目的朋友表示抱歉。

從12月初,準(zhǔn)確的說,應(yīng)該是前幾天開始,InChat已經(jīng)開始進(jìn)行合理的重構(gòu)與演進(jìn)設(shè)計(jì),同時(shí)相關(guān)文檔都會(huì)分享到GitHub上,與本人博客中。

例如想在已經(jīng)開始設(shè)計(jì)的登錄模塊。

開源IM項(xiàng)目-InChat登錄接口設(shè)計(jì)與實(shí)現(xiàn)(基于Netty)

一個(gè)不情之請(qǐng)

正如上文中說到的,我很感謝女朋友一直以來的陪伴,作為程序猿來說,是很珍貴的,不過這個(gè)項(xiàng)目的初衷是為了她而做的,而后能等到朋友與線上友人的支持真的是意料之外,再次很感謝各位熱愛開源的朋友。

明天就是她的生日,我希望把InChat繼續(xù)維持下去,作為一個(gè)生日禮物必備的項(xiàng)目報(bào)告一直延續(xù)下去。

如果對(duì)本項(xiàng)目有興趣的,可以加入QQ群:628793702,一起研究討論學(xué)習(xí)。

如果以上有一些對(duì)你有所幫助的話,還請(qǐng)到GitHub對(duì)項(xiàng)目點(diǎn)個(gè)Star。感謝對(duì)每一個(gè)開源者的支持!謝謝。

希望本項(xiàng)目對(duì)你有所幫助,我的目標(biāo)暫定,一個(gè)小眾IM加物聯(lián)網(wǎng)的開源通訊項(xiàng)目。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72359.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<