请教各位大佬接收到的 tcp 数据怎么显示到前台页面,并存入 mysql 数据库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Rieouu
V2EX    程序员

请教各位大佬接收到的 tcp 数据怎么显示到前台页面,并存入 mysql 数据库

 
  •   Rieouu 2018-07-21 15:24:01 +08:00 3727 次点击
    这是一个创建于 2727 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们实验室的一个物联网项目,底层的设备会把消息(温度,湿度)通过网关以 TCP 发给服务器,我们在服务器通过 netty 接收,这些温湿度消息需要显示到前台,请问怎么把 netty handler 收到的消息显示到前台,我们后台使用 Java SSM 框架处理的,不知道各位大佬有没有碰到过这种问题

    20 条回复    2019-10-17 09:05:53 +08:00
    Rieouu
        1
    Rieouu  
    OP
       2018-07-21 15:28:16 +08:00
    我们准备用 websocket 做推送,但是怎么把 netty 收到的消息通过 websocket 推送出去,查了好多资料都没头绪
    qiayue
        2
    qiayue  
    PRO
       2018-07-21 15:28:17 +08:00   1
    netty 收到后存到数据库
    你说的前台是指浏览器端吧,直接从数据库取
    如果想实时显示数据变化,你还需要用到 websocket
    qiayue
        3
    qiayue  
    PRO
       2018-07-21 15:30:21 +08:00
    netty 本身可以实现一个 websocket 服务,浏览器连上来就可以
    如果想简单实现的话,可以用 nodejs 或者 swoole 起 websocket 服务
    netty 通过 http get 形式向 websocket 服务传数据库
    luozic
        4
    luozic  
       2018-07-21 15:33:14 +08:00 via iPhone
    快速轮子和慢慢搞的轮子不一样啊。快速的有 nodejs 现成的轮子改改就行。严谨的带权限控制啥的 自己撸一个吧。
    Rieouu
        5
    Rieouu  
    OP
       2018-07-21 15:34:50 +08:00
    @qiayue 您的意思是通过 netty 实现 websocket 服务,再将 netty 收到的消息通过 websocket 服务推送出去?我们的思路是准备这么做的,谢谢
    Rieouu
        6
    Rieouu  
    OP
       2018-07-21 15:36:34 +08:00
    @luozic nodejs 有把 tcp 消息直接推送到前台的轮子吗?请问能贴出来给我参考一下吗?感激不尽
    Rieouu
        7
    Rieouu  
    OP
       2018-07-21 15:38:41 +08:00
    不知道有没有大佬做过物联网项目有过这种情况,就是把底层的 tcp 数据推送到前端页面,要有个现成的轮子就好了
    sagaxu
        8
    sagaxu  
       2018-07-21 15:39:01 +08:00 via Android
    sagaxu
        9
    sagaxu  
       2018-07-21 15:40:54 +08:00 via Android
    springboot 也有现成的 websocket 轮子,开箱即用
    Rieouu
        10
    Rieouu  
    OP
       2018-07-21 15:43:59 +08:00
    @sagaxu 谢谢,我赶快来看一下
    luozic
        11
    luozic  
       2018-07-21 15:44:45 +08:00 via iPhone
    Socket.IO 的官网教程里面就有。
    Rieouu
        12
    Rieouu  
    OP
       2018-07-21 15:52:57 +08:00
    @luozic 我去瞅瞅
    ryd994
        13
    ryd994  
       2018-07-21 16:32:11 +08:00 via Android
    直接存数据库或文件
    然后前天不停读文件刷新就好了
    几个温度值,能有多高的实时性?一般也没多少请求频率。怎么好写怎么写就行了。
    sampeng
        14
    sampeng  
       2018-07-21 22:30:02 +08:00
    不写 java 来答。。这不就是设计模式里面第一章的例子么。。。。

    原则上你所有收到的数据都在内存里。在这个进程里面所有的资源你都是可控的。。你就不能在一个工程里面起一个 netty 一个 websocket 吗?反正数据都在内存。。你想怎么玩不都随便你。要精确一点就得加锁
    sampeng
        15
    sampeng  
       2018-07-21 22:32:53 +08:00
    换我做就是把把你要的值弄在一个类似全局变量里面(全局对象,一定要可控)
    然后 main 里面起 3 个线程。一个做 netty。一个做 websocket 推送。一个把数据写回数据库做持久话。把全局变量给 3 个线程引用。加好锁。不是太复杂的逻辑问题吧
    Rieouu
        16
    Rieouu  
    OP
       2018-07-22 08:36:07 +08:00
    @sampeng 您这么一说我突然有思路了,通过全局变量实现数据共享,谢了哈
    vtoee
        17
    vtoee  
       2019-03-21 15:56:28 +08:00
    老哥的问题是否解决了,本人遇到的问题和你差不多,后台获取到前端数据,调用服务发送指令给硬件设备,netty 写的服务目前是 jar,预想这把 netty 写成可以接受 http 请求服务,后端获取到前端数据,发送请求给 netty 服务,发送给外界设备.
    Rieouu
        18
    Rieouu  
    OP
       2019-03-21 21:10:50 +08:00
    @vtoee 我做的时候保存了每一个硬件客户端和服务器之间的 TCP 连接,也就是 netty 里面的 channel,当需要发送给客户端时,直接 writeAndFlush 发送给对应的 channel 通道就行了,发送消息给客户端还是蛮好解决的,对了我的系统是单机的,后台 spring 和 netty 是耦合的
    vtoee
        19
    vtoee  
       2019-04-01 09:28:17 +08:00
    @Rieouu 客户端多的话 需要保存很多 channel 啊 ,另外 返回消息给客户端 消息数据需要去前端获取 这个怎么做的 保存 channel 是如何做的
    acme223
        20
    acme223  
       2019-10-17 09:05:53 +08:00
    你好,我现在做的项目和你做的这个特别像,关于服务器的那些代码您还有吗,我想参考一下。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5830 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 02:24 PVG 10:24 LAX 18:24 JFK 21:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86