场景:获取表单里边的实时状态值
一般情况下是 ajax 轮询通过 http 协议获取接口实时内容
如果用 socket 来实现的话,
是不是每个接口,后台都要起一个新的端口来提供连接。
对于这点,不太清晰。
场景:获取表单里边的实时状态值
一般情况下是 ajax 轮询通过 http 协议获取接口实时内容
如果用 socket 来实现的话,
是不是每个接口,后台都要起一个新的端口来提供连接。
对于这点,不太清晰。
1
jenlors Oct 28, 2020
可以用 websocket,传输的 json 用一个 key 区分场景。
|
2
xuanbg Oct 28, 2020
如果用 socket 来实现的话,粘包也许迟到,但不会缺席。
|
3
awanganddong OP 明白了
就是 switch case 判断 |
6
azcvcza Oct 28, 2020
websocket 起一个,然后根据 on('message',(data)=>{})来判断 data 的 type 再进行一系列操作
|
8
nnnToTnnn Oct 28, 2020
TCP 的流协议,哪来的包的说法,这个名词我惊呆了
|
9
xuanbg Oct 28, 2020
@nnnToTnnn 是的,v2 不是经常出来粘包问题么,所以就调笑了一下。应用不通过应用层协议通信,而是直接往 socket 里怼数据,就会发现对方接受的数据粘在一起无法区分,俗称“粘包”。
|
11
wysnylc Oct 28, 2020 我说怎么看不到粘包楼,原来早就被我 b 了
|
12
libook Oct 28, 2020
服务端一个端口可以管理多个客户端的连接,但这个管理需要你自己在程序上做好,比如数据应该经由哪一条连接发给指定的客户端。
用 WebSocket 吧,很多问题都帮你考虑好了,另外如果你用 Node.js ,Socket.io 这个库帮你把 WebSocket 封装得开箱即用。 |
13
reus Oct 28, 2020 via Android
Http 也可以 long pull,不用轮询
|
14
zsdroid Oct 28, 2020
粘包警察会迟到到不会缺席
|
15
shintendo Oct 28, 2020
粘包警察还有三十秒……哦已经到了啊
|
16
selvecui Oct 28, 2020
tcp 粘包很常见啊,应用层做好 magic 字,起始符,结束符就好了,但是哪里比得上 websocket 方便,纯 tcp 有点底层了
|
17
FinnBai Oct 28, 2020
看起来是 watch 的场景,可以不用 websocket,直接通过 http 的持久链接来实现,也叫长链接。
具体可以搜索 HTTP 长链接、HTTP chunk 等关键词 |
18
zczy Oct 28, 2020
直接用 Netty 的 websocket 的 example,代码都是现成的
|
19
caoyouming Oct 28, 2020
粘包是应用层在消息边界上定义有问题吧?
|
20
stephenxiaxy Oct 28, 2020
@xuanbg 哈哈
|
21
awanganddong OP @baiyi 项目是基于 php-fpm ,一个 http 长链接就占了一个进程,实现起来不如 socket 来的合适。
|
22
awanganddong OP |
23
des Oct 28, 2020 via iPhone
longpoll sse websocket 都可以做到,你这种比较推荐 sse
|
24
CommandZi Oct 28, 2020
是不是每个接口,后台都要起一个新的端口来提供连接。
不是 一个 socket 链接可以任何二进制数据,为什么要新起链接? |
25
ISSSSSSS Oct 28, 2020
Websocket 或者 SSE 。
|
26
dcoder Oct 28, 2020
@awanganddong 楼里各种五花八门的回答,你们是在认证帮楼主么?
我认证问楼主个问题,现在 JS web 前端可以直接用 TCP/UDP socket 和后端通信了 ?? 我记得以前是不能的. 如果不能,这个问题本身就不成立. 只能用 WebSocket (over TCP), 不需要你管理 socket ports. |
27
maplelin Oct 28, 2020
我寻思 websocket 也不存在的粘包啊,不会有人自己实现一个协议吧
|
28
itechify PRO 逐渐偏离主题,打起来打起来
|
29
awanganddong OP 乃们啊,就因为粘包打起来了。
|
30
xhinliang Oct 28, 2020
浏览器能用裸 TCP 么,粘包党?
哈哈 |
31
muzuiget Oct 29, 2020
不懂粘包,说明混 V2EX 不够久(狗头)。
|