关于 socket 的一个问题

2019-08-19 19:52:41 +08:00
 leo7476040305

前端 websocket 传给后端的数据格式是这样的: 但我想传给后端的格式是这样的://HANDSHKE\r\n usernme \r\n 前端代码是这样的: 有什么办法可以实现这个吗...

1425 次点击
所在节点    JavaScript
10 条回复
ysc3839
2019-08-19 22:38:37 +08:00
第一个截图是 HTTP/1.1 的协议升级请求,服务器响应后浏览器才会开始发 WebSocket 的数据。
你需要在后端使用一个 WebSocket 库帮你处理这些请求,最后你可以直接拿到前端发的数据。
sunsulei
2019-08-19 23:18:10 +08:00
这才是握手阶段 连上了以后才能 send。 或者在 url 拼接参数,会在握手阶段带过去的
also24
2019-08-20 00:00:11 +08:00
WebSocket 不是一个纯粹的 TCP 流,为了兼容 Web 环境,它是带有 HTTP 头部的(或者说握手使用 HTTP 请求)。

它的名字让许多人产生了误解。
wd
2019-08-20 07:00:00 +08:00
看了几遍都没看懂到底要干啥。z... 前端代码不是都有了么……
leo7476040305
2019-08-20 07:23:16 +08:00
@wd 我想要传回后端的数据是不带 http 头的
xnode
2019-08-20 09:05:41 +08:00
@leo7476040305 websocket 必须是带 http 头的,socket 没有 ,但是浏览器只支持 websocket, 你需要在建立连接之后 过滤掉 http 头
Chenamy2017
2019-08-20 09:38:03 +08:00
你貌似在用 websocket 去实现 socket。
zealot0630
2019-08-20 11:23:04 +08:00
安全问题,如果让你浏览器随便使用 socket 访问互联网,任何网站就都可以借用你的浏览器攻击任何他想要攻击的网站。

所以 WebSocket 是基于 http 封装的,必须包在 http 协议内,通过 http 头实现跨域等权限限制。
wd
2019-08-20 11:48:44 +08:00
后端你需要使用一个 websocket server ....
leo7476040305
2019-08-20 12:37:33 +08:00
@Chenamy2017 是这样的

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

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

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

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

© 2021 V2EX