Websocket入门(文末含在线聊天demo源码)

Websocket入门(文末含在线聊天demo源码)

什么是WebSocket

WebSocket是一种在单个TCP连接上进行全双工通信的网络协议。它使得客户端和服务器之间的数据交换变得更加高效和实时,适用于实时聊天、在线游戏等需要即时通信的应用场景。

WebSocket解决了什么痛点

WebSocket解决了传统的HTTP通信模型中存在的一些通点,包括:

  • 实时性和效率:
    传统的HTTP请求-响应模式在每次通信中都需要建立新的连接,而WebSocket在建立连接后可以保持长久的通信会话,实现了实时的双向通信,减少了通信的开销和延迟。
  • 减少资源消耗:
    由于WebSocket 可以在单个TCP连接上进行全双工通信,因此可以减少服务器和客户端之间的资源消耗,包括网络带宽和服务器负载。
  • 更少的网络开销: WebSocket使用较少的网络开销来维护连接,相比于HTTP轮询或长轮询等技术,能够更有效地利用网络资源。
  • 支持跨域通信: WebSocket协议支持跨域通信,允许在不同源之间进行实时数据交换,而不需要像传统的HTTP请求那样受到同源策略的限制。

总的来说,WebSocket解决了传统HTTP通信模型中存在的延迟高、效率低、资源消耗大等问题,使得实时通信变得更加高效和便捷。

SpringBoot中怎么使用WebSocket

  • 在pom中引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  • 添加ServerEndpointExporter
@Component
public class WebConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter(){
        return new ServerEndpointExporter();
    }
}
  • 新建WebSocket处理类,其中url参数可自定义
@Component
@ServerEndpoint(value = "/wsserver/{userId}/{userName}")
public class WsServe {
    @OnOpen
    public void onOpen(Session session, @PathParam("userId") String userId, @PathParam("userName") String userName) {
        log.info("{}用户上线, 用户id{}",userName, userId);
        session.getUserProperties().put("userId", userId);
        //clients中添加连接的客户端
        WsConnectConfig.CLIENTS.put(userId, session);


        //通知在线用户更新列表
        this.updateFriends(userId, true);
    }
}

常用注解

@OnOpen:当WebSocket连接建立时将被调用。可以在这个方法中执行一些初始化操作。
@OnMessage:当收到WebSocket消息时将被调用。可以在这个方法中处理接收到的消息并进行相应的处理。
@OnClose:当WebSocket连接关闭时将被调用。可以在这个方法中执行一些清理操作。
@OnError:当WebSocket发生错误时将被调用。可以在这个方法中处理错误并进行相应的处理。
在这里插入图片描述

在前端项目中怎么使用WebSocket

const socket = new WebSocket('ws://localhost:8888');

socket.onopen = (event) => {
   console.log('WebSocket connection opened:', event);
};

socket.onmessage = (event) => {
};

socket.onclose = (event) => {
   console.log('WebSocket connection closed:', event);
};

示例项目:在线聊天,需要有vue springboot经验

在这里插入图片描述

下载前端源码后,

  1. 进入chat-client文件夹
  2. 执行npm install命令
  3. 等待成功后执行npm run dev 即可启动项目
  4. 访问端口为8080

下载后端源码后,使用idea导入项目后,等待maven下载完成,即可启动
后端在application.yml可以修改端口
在这里插入图片描述

后端端口修改后请对应修改前端端口
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值