最近学习到了websocket,Beego等知识。
因此看了Beego官方的一个聊天室例子——利用websocket实现的网页版实时会话程序。
此时想起之前一个利用tcp完成的黑窗口聊天室项目。
两者之间貌似相同,都是客户端与服务器之间建立连接一直相互通话,直到连接断开结束通话。(其实这个相同点是搞明白他们的异同之后才想到的)。
两者异同点:
1.tcp属于传输层协议,websocket属于应用层协议(http也属于应用层)
2.两者都可以一次握手连续通话,http是一次请求一次回复即完成一次通话。
3.websocket是为了解决网页实时通话问题而产生的HTML5中新增的协议。
4.websocket和http都是基于tcp协议实现的,websocket利用http协议完成握手并将http升级成websocket协议从而完成握手、实时通信功能。
5.tcp协议是传输层协议,属于流模式面向连接,传输大量数据,比较可靠安全。
到此已经基本可以看出websocket底层其实就是tcp,他们两个都可以通过多协程处理多连接实时传输完成群聊功能。
2021-8-1修改:
今天又拿go的net包去敲了一下黑窗口聊天室,构思的时候发现看似简单拿来直接用的东西,其实底层还是有好多东西没有理解透彻(灯下黑)。
1.web编程各种框架、包已经封装好了底层内容,会自动起多个协程分别处理每个请求和通话。
而net包相对来说比较靠近底层。好多东西需要我们自己去实现,就多个请求通话来说,需要我们去监听并循环接入,手动起多个协程去处理。而在封装好的各种web框架中已经帮我们处理好了,从而导致我编写黑窗口聊天室又忽略了这一点。