求问一个服务端架构的问题。。。

2016-06-23 12:38:38 +08:00
 yejinmo
正在做一个 校园助手 性质的 APP ,内含可以查询教务信息、电费、一卡通、图书馆等一些信息的功能模块

问题:

现在用的是:

客户端与服务端建立 Tcp 长连接,进行消息查询及推送

但总觉得用 Tcp 长连接传送数据怪怪的,求问下应该使用什么方法。。

现架构如下图所示:

2205 次点击
所在节点    问与答
25 条回复
qcloud
2016-06-23 13:23:21 +08:00
我看到你在用 XX 云,我就知道这款 app💊
qcloud
2016-06-23 13:23:57 +08:00
你这个图是用什么做的
manhere
2016-06-23 13:28:20 +08:00
适合做成微信公众号
Muninn
2016-06-23 13:43:55 +08:00
现在大家都是用 restful API 的
不过是单向的 你需要客户端定时检查消息
或者用某些推送框架
yejinmo
2016-06-23 13:48:22 +08:00
@qcloud XX 云便宜啊 = =

图是用 Office Visio 做的

yejinmo
2016-06-23 13:48:43 +08:00
@manhere 不想做微信端。。功能太少 UI 不好看 = =
yejinmo
2016-06-23 13:49:30 +08:00
@Muninn 没有听说过。。查一查去。。。
zhgg0
2016-06-23 14:12:20 +08:00
用第三方推送
yejinmo
2016-06-23 14:12:48 +08:00
@Muninn 感觉这个技术跟 CGI 区别不是很大啊 = =
visonme
2016-06-23 14:18:38 +08:00
推送模块长连接我可以理解,但是查询模块都用长连接,费解,不知道是不是有特别的目的。
这种应用后端直接 restful api + websocket 就可以了
zjqzxc
2016-06-23 15:53:24 +08:00
实时性不强,还有 web 端

考虑每小时(或者 10 分钟或者半小时)让客户端发送一个 http 请求来问问服务器有没有新消息
用 http 能解决的事儿,没必要自己维持 tcp 连接。
zrp1994
2016-06-23 17:04:22 +08:00
血与泪的教训:自己做项目千万别自己设计 TCP 协议,就算要用也不要用长连接。
还有阿里云能直接访问到校园网服务端么?
其他架构看着还行。
yejinmo
2016-06-23 17:32:05 +08:00
@zhgg0
@visonme
不仅仅是有推送,主要是还要提交数据啊。。之前用过 CGI ,效率太低了。。
看了看 WCF ,感觉还可以。。
yejinmo
2016-06-23 17:35:20 +08:00
@zrp1994
阿里云上边只扔了个前端服务器,只起个中转消息、分发任务的作用,逻辑在校内,向中转发起主动连接。。。不过被信息中心谈话了,说要封掉所有类似未备案的主动连接 = =
alex321
2016-06-23 17:39:15 +08:00
现在这些人啊,为了 APP 而 APP 。。。。一个 APP 的下载装机成本那么高,相比之下寄生在微信公众号或者支付婊的服务窗成本却是那么那么的低啊。
yejinmo
2016-06-23 17:40:07 +08:00
@zjqzxc
想过用轮询。。考虑时效问题一分钟就得轮一次。。即使只有一千用户这样子轮再加上正常请求前端服务器只有一台,还要负责反序列和解密,开销太大了。。。
zhgg0
2016-06-23 17:46:23 +08:00
需要服务器通知客户端的才用第三方推送。
其它的提交信息、查询什么的就走普通 http 请求 get 、 post 、 put 就好了。压根不需要写什么 tcp 长连接传数据啊啊。
boyhailong
2016-06-23 18:07:37 +08:00
明显不需要长连接。。。。 最简单的就是 http 噻
mornlight
2016-06-23 18:17:41 +08:00
没有看出来那个地方是必须要用 TCP 连接去做的,更何况 iOS 设备上的通知你不走 Apple 的推送渠道根本没可能在 App 关掉后推送消息。
客户端主动发起的查询操作应该走 HTTP 。
zrp1994
2016-06-23 19:03:17 +08:00
@yejinmo 不允许主动连接,那允许反向代理么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/287764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX