aceld / zinx

A lightweight concurrent server framework based on Golang.
https://github.com/aceld/zinx/wiki
MIT License
7.07k stars 1.21k forks source link

以前一直觉得本地就用socket,现在发现,好像这个socket能做的,websocket也都能做吧,不知道socket有什么优势. #83

Closed 2vl closed 1 year ago

2vl commented 3 years ago

我用再局域网的c/s环境中,现在可以互相替用?

aceld commented 3 years ago

Socket是传输控制层协议,WebSocket是应用层协议。 你应该用HTTP和WebSocket对比。 socket 是操作系统给我们暴露出来的用于(相同主机/不同主机)端口之间的通信入口。 socket可以是Tcp的,也可以是Udp的,在内核中甚至可以是基于物理mac地址的。 而WebSocket起初是为了解决浏览器与服务器的全双工传输问题,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。而在websocket出来之前,浏览器是做不到这一点的,因为HTTP是无状态的(非持久化,单向的)协议。

yih-redhat commented 3 years ago

@aceld 您好,我问一下,如果做一些小游戏的话,前端用html5,这样的话后端用websocket而不是TCP实现是否更简单一些? 所以我有点没搞明白,像一般的前端都是接受jsaon数据的,那如何跟zinx打交道呢,难道是读取数据的时候要手动转jason, 或者需要在zinx之上再用websocket封装一层?

aceld commented 1 year ago

zinx目前已经集成了WebSocket的能力。