Socket 与 WebSocket 详解
一、Socket网络套接字什么是SocketSocket是操作系统提供的网络通信抽象层可以理解为网络世界的电话插座。属于传输层生活类比你家公司有一个固定电话ServerSocket客户给你打电话时电话会响你接听accept然后你们开始通话建立连接// 服务器端创建一个电话插座 ServerSocket serverSocket new ServerSocket(8080); // 等待客户连接有人打电话进来 Socket socket serverSocket.accept(); // 获取输入流读取客户说的话 InputStream in socket.getInputStream(); // 获取输出流向客户说话 OutputStream out socket.getOutputStream(); // 客户端给公司打电话 Socket socket new Socket(localhost, 8080);二、WebSocket什么是WebSocketWebSocket是HTML5提出的一个协议基于HTTP但建立了持久化的双向通信。属于应用层为什么需要WebSocketHTTP的缺点只能客户端发请求→服务器响应服务器不能主动给客户端发消息每次请求都要握手建立连接→传输→断开 生活类比HTTP 你给客服打电话每次说话都要重新拨号WebSocket 客服热线一直保持连接可以随时互相说话WebSocket的建立过程客户端发送请求带有特殊的Header GET /chat HTTP/1.1 Upgrade: websocket Connection: Upgrade ...服务器同意升级 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade连接建立双方可以随时发送消息三、Socket vs WebSocket 对比特性SocketWebSocket协议层次传输层应用层协议TCP协议WebSocket协议连接方式原始TCP/UDP连接HTTP协议升级协议开销低中等有协议头双向通信✓ 支持✓ 支持浏览器支持/HHTP兼容✗ 不支持✓ 原生支持安全性需自行实现支持WSS(WebSocket Secure)消息分帧需自行处理协议自动处理适用场景系统级通信Web实时应用复杂度较低较高四、图解通信流程Socket通信HTTP通信传统WebSocket通信五、实际使用场景用Socket的场景Java后端之间的通信连接MySQL、Redis数据库消息队列RabbitMQ、Kafka用WebSocket的场景实时聊天微信网页版、客服系统股票行情实时价格推送在线游戏玩家操作实时同步协同编辑多人同时编辑文档六、一句话总结概念定义Socket操作系统的TCP接口底层网络通信基础WebSocket基于HTTP升级的协议实现服务器主动推送关系WebSocket底层也是用Socket实现的但做了协议封装使用更简单。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422698.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!