我用的不是 spring boot,是自己搭建的 ssm 架构,我记得 spring mvc 有一个 WebSocket 的 jar 包,我百度了一下,那个 jar 包好像是专门用于浏览器与服务器之间的。
我要用一个 4g 模块的单片机向服务器发起 tcp 通信或者 udp 通信,将位置数据发送给服务器,那个 WebSokcet.jar 包能做这些.或者有现成样例代码可以参考吗
首先这个单片机,根据测试软件的测试结果,该单片机好像是支持 socket 服务的。
1
momocraft 2019-10-17 09:19:32 +08:00
websocket 不是浏览器专用的
但是 socket 不是 websocket |
2
qping 2019-10-17 09:23:05 +08:00
websocket 是应用层协议,在 tcp/ip 之上,你需要的是 java socket
|
5
tctc4869 OP @qping 或者说是不是只有要在 web 程序开始的时候,加载一段服务端 socket 代码,用 white 循环死循环套住,不停的等待接收数据?
|
7
tctc4869 OP @tanranran 我目前的思路就是在 web 程序加载的时候所运行的方法里,加载一个服务端的 socket 的一段代码,并用死循环套住。这样的话,会有什么问题吗
|
9
misaka19000 2019-10-17 09:30:41 +08:00
netty
|
11
wccc 2019-10-17 09:34:42 +08:00
netty mina
|
12
alienx717 2019-10-17 09:40:15 +08:00
利用这些 netty mina tio smart-socket 框架收发消息、暴露 tcp 端口。
终端连接到服务端的这个端口发送报文。 根据协议在收到消息的那个 handler 中解析。 也可以先在 decoder 那层解析后封装到自定义的对象里面。 |
13
lqw3030 2019-10-17 09:48:32 +08:00
你说的 tcp 和 udp 归属传输层协议,我们 spring mvc 处理的都是应用层协议,所以你需要的应该是 netty
|
14
knva 2019-10-17 09:50:22 +08:00
再起一个服务,专门用于通信, 用数据库跟 web 层交互
|
15
yplam 2019-10-17 09:50:24 +08:00
如果要自己造轮子的话就 netty
简单的话就 mqtt |
16
leafre 2019-10-17 10:02:18 +08:00
netty
|
17
gz911122 2019-10-17 10:06:50 +08:00
netty 简单一些
vertx 基于 netty 封装了一层,用起来更简单一些 |
18
andychen20121130 2019-10-17 11:35:23 +08:00
websocket 协议不一样。
netty 吧。 我有一套代码。 |
19
opengps 2019-10-17 11:36:51 +08:00
socket 服务端可以认为是独立的,不管你借助什么形式运行都可以,只是需要额外注意对外公开端口
|
20
ESeanZ 2019-10-17 11:46:09 +08:00
单片机、物联网应该用 MQTT 吧。
|
21
hugedata 2019-10-17 13:36:43 +08:00
你的 spring MVC 写一个接收 post 消息的 action,根据结果,返回 json,单片机中看你用的具体哪个系统,有没有移植好的 curl,有的话,c\C++\shell 等任意语言调用 curl 命令,没有的话,自己找该系统提供的 http 请求组件,然后用它访问你的 springMVC 的这个 action,带上 post 数据,以 post 方式提交。然后根据结果判断提交是否成功。这么简单的事情。。。。贵司就没有人能想明白吗?
|
22
mango88 2019-10-17 14:00:22 +08:00
仅仅用来上传 gps 等位置数据,服务器不需要与设备交互等需求
不需要用到长连接通讯吧 发起一个 http request 有啥不能解决的 |
23
zhenjiachen 2019-10-17 14:09:05 +08:00
Spring 不是有个 RSocket 吗,好像可以和 Spring MVC 一起用?
|
24
tctc4869 OP @hugedata 这个单片机可以发 http 请求,我一开始想用 http 的,用 at 命令可以得到 gps 数据,不过目前,只能发手动填写的数据,发不了 gps 上去。用 tcp 好像可以。
用 http 发 gps 数据有一个问题。做不到用 at 命令进行中转,我向同事咨询过,能不能通过 c 语言中转,先发获得 gps 的 at 命令,然后通过 c 语言字符数组做到拼接得到的 gps 数据作为 http 通信请求路径的数据位,再通过 at 命令发一个 post 请求。他回答这个单片机不行。我很久没接触 c 语言了。 这边有用单片机向 tcp 发送到其他网站测试的例子 |
26
hugedata 2019-10-17 16:37:21 +08:00
你的 spring MVC 写一个接收 post 消息的 action,根据结果,返回 json,单片机中看你用的具体哪个系统,有没有移植好的 curl,有的话,c\C++\shell 等任意语言调用 curl 命令,没有的话,自己找该系统提供的 http 请求组件,然后用它访问你的 springMVC 的这个 action,带上 post 数据,以 post 方式提交。然后根据结果判断提交是否成功。这么简单的事情。。。。贵司就没有人能想明白吗?
|