websocket服务端开发

websocket技术在服务端实时消息的推送和im聊天系统中得到了广泛应用。作为一名后端研发人员,这其中又有哪些需要了解和注意的问题点呢?接下来,我一一进行阐明。

SpringBoot项目中引入依赖

引入依赖

  <!--websocket支持包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
            <version>your spring-boot version</version>
        </dependency>

创建websocket服务端

项目中引入websocket依赖后,接下来我们创建websocket服务端。

1.基础版WebSocketServer

@Component
@ServerEndpoint("/xxx")
@Slf4j
public class WebSocketServer {
​
    /**
     * 连接建立成功调用的方法
     *
     * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
     */
    @OnOpen
    public void onOpen(Session session, @PathParam("chatId") String chatId, @PathParam("userId") String userId) {
​
​
    }
​
​
    /**
     * 连接关闭调用的方法
     */
    @OnClose
    public void onClose(Session session) {
       
​
    }
​
​
​
    /**
     * 收到客户端消息后调用的方法
     *
     * @param message 客户端发送过来的消息
     * @param session 可选的参数
     */
    @OnMessage
    public void onMessage(String message, Session session) {
     
    }
​
  
    
​
    /**
     * 发生错误时调用
     *
     * @param session
     * @param error
     */
    @OnError
    public void onError(Session session, Throwable error) {
        
    }
​
}

  1. @ServerEndpoint("/xxx") 中的路径为websocket的连接地址,类似于我们项目中定义的controller接口地址。

它用于定义一个WebSocket端点:标记一个Java类作为一个WebSocket的服务器端点,使其能够处理来自客户端的WebSocket连接请求。使用@ServerEndpoint注解时,你可以指定一个路径,通过这个路径客户端可以与服务器建立WebSocket通信。

  1. 无论是websocket客户端还是服务端,创建websocket对象时,都默认提供四个连接管理的基础方法分别是:

    • onOpen() 打开/创建连接

    • onMessage() 接收消息

    • onClose() 连接关闭

    • onError() 出现错误:如消息处理异常

2.完整版webSocketServer

package com.rs.websocket.config;
​
import com.alibaba.fastjson.JSON;
import com.rs.patient.dao.model.PatientChatMessage;
import com.rs.patient.rpc.api.PatientChatMessageService;
import com.rs.patient.rpc.dto.PatientChatMessageDto;
import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websoc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值