websocket开发一个简单的网页聊天问题记录

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

   现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

  浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求(http的),连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

事件     事件处理程序         描述
open      Socket.onopen       连接建立时触发
message     Socket.onmessage     客户端接收服务端数据时触发
error      Socket.onerror       通信发生错误时触发
close     Socket.onclose       连接关闭时触发

问题1:开始引入的包版本不对,有很多版本。

    我最后使用的2.1.6的springboot,以及spring-boot-starter-websocket、spring-session-core的websocket相关的包

问题2:新冠肺炎疫情期间敏感话题,当时和朋友不好在微信上聊天,用的自己搭建的页面,但是他们那边不能连接外网。

    使用自己的云服务或者natapp或者ngrok等吧服务映射出去,他们能访问了但是又出现了新的问题,websocket连接不上。后来查询发现需要用nginx代理下。nginx代理的配置

  location ~ $ {
    proxy_pass http://127.0.0.1:8088;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

    

 

打开两个浏览器测试,也可以手机浏览器访问使用。

gitee地址https://gitee.com/javachenbin123/websocket_chat

 

posted @ 2020-04-21 10:23  尘逐风123  阅读(415)  评论(0编辑  收藏  举报