默认
发表评论 15
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
请教关于WebSocket客户端向服务端传值的问题
阅读(42106) | 评论(15 收藏 淘帖
求问目前长连接改造时这样设计:客户端连接服务端长连接的代理(1),长连接代理分发给具体的业务层(2);(这样改造的好处是以前的业务方无需改变即可直接接入)(1)中是通过websocket直接连接的,(2)中服务端的长连接代理是通过发送短连接请求向业务方请求具体数据,;以前只有短连接请求,请求逻辑是这样的:客户端直接通过http,请求业务方获取数据;那么,如果现在长连接请求的时候,在业务方看来其实还是短连接请求,但是之前在短连接请求的时候传递的header,cookie,现在客户端需要怎么传递比较合适呢?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:移动端IM开发者必读(二):史上最全移动弱网络优化方法总结下一篇:IM群聊消息的已读回执功能该怎么实现?
推荐方案
评论 15
你描述的逻辑好乱,没看明白,不敢乱回复你。

你能否条理清楚地说明:
1)你现在的长连接是用来做什么;
2)短连接用来做什么;
3)长连接跟短连接的关系是什么。
服务端长连接请求是通过两部分实现的:一proxy模块,负责与客户端建立长连接(websocket),二具体的业务模块,proxy通过http请求业务模块获取返回数据。如果二过程中需要header中数据,那么客户端需要怎么传递给proxy会比较友好

WechatIMG13.jpeg (80.39 KB, 下载次数: 1038)

WechatIMG13.jpeg
引用:JackJiang 发表于 2018-05-16 12:09
你描述的逻辑好乱,没看明白,不敢乱回复你。

你能否条理清楚地说明:


服务端长连接请求是通过两部分实现的:一proxy模块,负责与客户端建立长连接(websocket),二具体的业务模块,proxy通过http请求业务模块获取返回数据。如果二过程中需要header中数据,那么客户端需要怎么传递给proxy会比较友好

WechatIMG13.jpeg (80.39 KB, 下载次数: 1031)

WechatIMG13.jpeg
引用:dragon 发表于 2018-05-16 13:03
服务端长连接请求是通过两部分实现的:一proxy模块,负责与客户端建立长连接(websocket),二具体的业务模块 ...

看懂你的意思了。
你这个架构技术上可以实现,至于proxy需要的东西,你客户端通过长连接带过来就行了,简单点就用JSON,复杂一点就用protobuf,作为数据传输格式。
引用:JackJiang 发表于 2018-05-16 14:20
看懂你的意思了。
你这个架构技术上可以实现,至于proxy需要的东西,你客户端通过长连接带过来就行了, ...

这个能有什么比较友好的方式传递吗,现在传递其实比较好实现,但是我们放到自己的私有协议的扩展字段中,我觉得这种设计不太友好,您有什么比较好的建议吗
引用:dragon 发表于 2018-05-16 14:21
这个能有什么比较友好的方式传递吗,现在传递其实比较好实现,但是我们放到自己的私有协议的扩展字段中, ...

并没有什么不好,都这么玩
引用:JackJiang 发表于 2018-05-16 14:26
并没有什么不好,都这么玩

但是感觉这样有点山寨,在长连接协议中还单独开出一块,放http请求的header,一听就觉得怪怪的
引用:dragon 发表于 2018-05-16 14:29
但是感觉这样有点山寨,在长连接协议中还单独开出一块,放http请求的header,一听就觉得怪怪的

那这又回到了http里的session机制原理了,你完全可以仿照着来实现,就是由http那边保存session会话,客户端只要带着它的token或session_id,到这这就可以识别出来,所以客户端只需要在手次认证时带过来你想要的这些内容,之后就只在token或session_id不就省事多了
引用:dragon 发表于 2018-05-16 13:03
服务端长连接请求是通过两部分实现的:一proxy模块,负责与客户端建立长连接(websocket),二具体的业务模块 ...

你这种架构很容易成瓶颈啊,因为长连接是高性能的,但proxy后面的http不可能高性能
签名: 国庆长假还没有缓过来,请让我静一静,产品狗死远点...
引用:IMDeveloper 发表于 2018-05-16 14:34
你这种架构很容易成瓶颈啊,因为长连接是高性能的,但proxy后面的http不可能高性能

没太听明白您的意思,能详细帮忙解释下吗,大神
引用:JackJiang 发表于 2018-05-16 14:33
那这又回到了http里的session机制原理了,你完全可以仿照着来实现,就是由http那边保存session会话,客户 ...

但是业务方要想在cookie中携带业务信息,那就只能在传递数据的时候,单独把cookie信息传递了吗?感觉这种为了兼容以前的http请求弄的很鸡肋
引用:dragon 发表于 2018-05-16 14:46
但是业务方要想在cookie中携带业务信息,那就只能在传递数据的时候,单独把cookie信息传递了吗?感觉这种 ...

你没看懂我在9楼的回复。
建议你先看看这篇文章《IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token》,然后举一反三
引用:JackJiang 发表于 2018-05-16 15:10
你没看懂我在9楼的回复。
建议你先看看这篇文章《IM开发基础知识补课(四):正确理解HTTP短连接中的Cooki ...

好的谢谢大神
引用:dragon 发表于 2018-05-16 15:43
好的谢谢大神

没看太懂
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部