最近有一个想法,我是 JAVAWeb 出生,没有 springMVC 之前接触的项目都是 Servelet,我曾经接触到的是项目往往维护无数个不同功能的 Servelet,Servlet 中往往重写两个方法 onGet(),onPost(),然后在开发最近基于 WebSocket 的实时电子看板项目的时候我突然觉得在后端写 WebSocket 服务的时候和以前的 Servelet 是如此相似,也需要重写他的几个方法,我开发的项目是整个页面只请求一个
WebSocket 能否完全承担后端 Controller 的角色呢?
相关帖子
- 其他回帖
-
yoss •
你说在重点上了,保证消息有序性。我们有个项目正是这样设计的,一开始没细想觉得挺简单,不就是消息的分发和处理。真正开始写的时候发现浏览器和服务端通过消息指令交互会遇到个问题:如何将用户操作请求和处理结果响应对应起来。比如用户提交数据时走
ws.sendMsg(业务指令码, 参数)
,服务端ws.onMsg
根据业务指令码分发处理,然后通过ws.sendMsg(操作指令码, 响应)
发消息给浏览器,此时浏览器就懵逼了:这个响应对应的是哪次业务提交数据的请求?后来我们通过 UUID 来关联请求和响应,解决了“对应”问题,但又碰到另外一个问题,请求和响应的时序不对。有时候用户后触发的请求会先返回,传统的 HTTP 是同步的,即使用 AJAX 在某些场景也可以设置为同步,很简单就能解决,但是用 WebSocket 的话就只能自己实现同步。我们最后只是简单加了个时间戳来判断时序,丢弃较老的响应。
总之,如果要用 WebSocket 来实现浏览器和服务端的交互,建议楼主先处理好这两个问题,否则设计再优美也只是玩具。
1 回复 - 查看全部回帖
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于