1
manhere 2017-04-07 16:55:37 +08:00 1
可以参考下推送系统的做法
|
2
zts1993 2017-04-07 16:57:44 +08:00 1
搜 非阻塞 IO
java 的话 先看 NIO 然后 netty 这样的框架。。 一个连接一个线程是不行的。。。。。。。。。。。。 |
3
fyyz 2017-04-07 17:00:26 +08:00 via Android 1
异步非阻塞 io
|
4
tabris17 2017-04-07 17:04:46 +08:00 1
java 用 Netty 或者 Vert.x
|
5
zonghua 2017-04-07 17:19:17 +08:00 via iPhone 1
用 Netty 实现 MQTT 协议
|
6
wwqgtxx 2017-04-07 17:19:53 +08:00 via iPhone 1
java 用 netty , golang 直接用 goroutine , python 用 gevent 或者 tornado
|
7
VicYu 2017-04-07 17:34:30 +08:00
然后在 actor 化, 进入邪教
|
8
shoaly 2017-04-07 17:48:14 +08:00
如果不是 "真实时" 消息, http 维护成本低太多了.
|
11
cevincheung 2017-04-07 18:49:49 +08:00
-_- 现在单车都开始锁上加联网模块了吗?怎么联网的? GSM ?
|
12
yangff 2017-04-07 18:50:42 +08:00 via Android
@cevincheung 4g 吧
|
13
bianhua 2017-04-07 18:53:50 +08:00
@t123yh
其实是这样的:如果用 TCP 先实现个 HTTP 客户端(哪怕就是读连续两个\r\n ,完全不解析头,拿 FIN 当 EOF ),然后再在 HTTP 上实现类似 Websocket/Comet 的东西,肯定不如直接拿 TCP 传递通知方便+效率高,何况这可能是在单车附加的设备上。 |
14
qiayue OP @cevincheung 4G 物联网卡,但是你硬件里的上网模块可以用 4G 的也可以用 2G 的。
移动的卡, 500M 流量, 5~9 块钱,看你拿的量多少 |
16
server 2017-04-07 19:37:19 +08:00
有个东西 叫 gps
|
17
ryd994 2017-04-07 22:03:01 +08:00 via Android
关键是 event driven ,用 nio
楼上说 http 也并非没有道理, HTTP 的话就可以让 HTTP 服务器在前面挡并发连接。至少 Nginx 是个现成的 event driven 。你的程序可以忽略网络部分。部分实现一个 HTTP/0.9 协议栈其实很简单,你只要保证自己能和自己的服务器通讯就好。 最后,如果不是对实时性有高要求,也没有高频率的消息,真的没有必要长连接。否则客户端光是维持连接的流量就已经不少了。要么你别开 keepalive ,加大 timeout ,明显也不可取。 |
18
qiayue OP |
21
wwqgtxx 2017-04-08 02:05:10 +08:00 via iPhone
|
22
ryd994 2017-04-08 02:05:57 +08:00 via Android
@qiayue 那就上 polling 呗
不过再提醒一下,数据断了的话,只要服务器没有主动发数据,连接表面上还是连着,你都不知道什么时候会报断开 所以 keepalive 还是要开 移动网络上的长连接……相当不靠谱 |
23
loading 2017-04-08 07:12:52 +08:00 via Android
有用短信的……
|
24
TangMonk 2017-04-08 07:55:30 +08:00 via Android
Erlang 开源项目: http://emqtt.io
|
25
firefox12 2017-04-08 14:48:16 +08:00 via iPhone
实现 http 并不难,你并不需要实现 http 的所有特性。如何节省电量,保持信道不被释放 减少重连才是关键 这些坑 微信都已经走过了
|
26
firefox12 2017-04-08 14:49:36 +08:00 via iPhone
至于连接数什么的也并不难,单机 2 百万的话,现在的摩拜 不用 3 台服务器就够了
|
27
ihuotui 2017-04-08 16:30:39 +08:00 via iPhone
tdp 吧,协议复杂点了
|