1.硬件客戶端是TCP/IP協(xié)議上報(bào)數(shù)據(jù),在測試時(shí)服務(wù)端用text協(xié)議的時(shí)候,用TCP模擬工具請(qǐng)求時(shí),我在onMessage回調(diào)中打印數(shù)據(jù)沒有反應(yīng),換成裸tcp協(xié)議就可以,不用工具用telnet又可以打印出發(fā)送的數(shù)據(jù)
如果硬件接口數(shù)據(jù)是如下格式
send 200,123456789,00001,AA000000,0005,00,0818031611,,,,0000,\r\n我是否可以直接使用TEXT協(xié)議,在服務(wù)端接收數(shù)據(jù)時(shí)根據(jù)分割符處理好數(shù)據(jù)即可
3.假設(shè)我有3000個(gè)設(shè)備同時(shí)連接,每個(gè)設(shè)備每秒會(huì)上報(bào)100條數(shù)據(jù),我是否需要在服務(wù)端建立異步任務(wù)比如存入redis去處理這些上報(bào)的數(shù)據(jù),然后另外一個(gè)任務(wù)去處理redis數(shù)據(jù)入MYSQL
剛接觸硬件通訊這塊,比較小白,希望老大解答,感謝
1、text協(xié)議要求每個(gè)包結(jié)尾是一個(gè)換行符,沒有換行符text協(xié)議認(rèn)為消息沒收全,就不會(huì)觸發(fā)onMessage
2、可以直接用text協(xié)議。但是注意text協(xié)議里是以換行符\n為結(jié)束,\n是換行符,一個(gè)字符,而不是\和n兩個(gè)字符
3、不清楚你的是什么場景,每個(gè)設(shè)備每秒要上報(bào)100條這么多數(shù)據(jù)。3000個(gè)設(shè)備那就是每秒30萬個(gè)請(qǐng)求。
30萬個(gè)請(qǐng)求都要操作數(shù)據(jù)庫或者redis 數(shù)據(jù)庫和redis是扛不住的,數(shù)據(jù)庫你要想辦法主從+分庫分表,redis要想辦法運(yùn)行個(gè)集群去處理。workerman這邊也需要用多臺(tái)服務(wù)器??梢耘獋€(gè)rabbitmq隊(duì)列慢慢去寫數(shù)據(jù)庫和redis。
謝謝解答,問題我在補(bǔ)充說明下
1.第一點(diǎn)我用TCP模擬工具發(fā)送的數(shù)據(jù)就
send 200,123456789,00001,AA000000,0005,00,0818031611,,,,0000,\r\n 這樣直接提交到服務(wù)器的,理論上text協(xié)議是\n結(jié)束應(yīng)該觸發(fā)onMessage回調(diào)的吧,測試中沒有觸發(fā),這個(gè)估計(jì)是我自己的問題稍后換工具在測試下
2.第三點(diǎn)實(shí)際場景中應(yīng)該沒有這么大多數(shù)據(jù),我只是隨口打了個(gè)比方^-^,主要是想問下這個(gè)思路是不是可行?意思就是用2個(gè)異步任務(wù)服務(wù) 分別去處理數(shù)據(jù)到redis和redis數(shù)據(jù)到mysql這樣