Java 基于Tomcat实现WebSocket

前言

公司大屏需要用ue4连接Java后端,因为公司同事之前都没有写过类似的,所以这个任务就理所当然的的给到了我这个新人上,一开始就决定使用WebSocket连接,一开始以为会很难,查看了一天的资料,发现其实挺简单的,只是对未知的技术总会感觉很难,不过还是要记录一下,顺便也是给其他不懂的朋友学习,好了,废话不多说,咱们直接开始。

1. 导入jar包

首先查看tomcat版本,支持7以上的版本,打开apache-tomcat-9.0.52\lib目录找到jar包拷贝到项目lib下面
在这里插入图片描述

2. 编写Java类

创建一个WebSocket类


 /**
 * @ServerEndpoint 注解是一个类层次的注解,
 * 它的功能主要是将目前的类定义成一个websocket服务器端,
 * 注解的值将被用于监听用户连接的终端访问URL地址,
 * 客户端可以通过这个URL来连接到WebSocket服务器端
*/
@ServerEndpoint(value = "/websocket")
public class WebSocket {
	private Session session;
	
	// 打开连接执行
    @OnOpen
    public void onOpw(Session session){
        this.session = session;
        System.out.println("打开了连接");
    }

	// 收到消息执行
    @OnMessage
    public void onMessage(String message,Session session){
        System.out.println(message);
        try{
        	/**
             *  这里填写自己的业务代码
            */
            // 最后要返回的可能是一个对象,也有可能是字符串,我们统统给他转成json字符串返回
        	sendMessage(JsonUtil.getJsonStr(message)); 
        } catch (IOException e){
            e.printStackTrace();
        }
    }
	
	// 关闭连接执行
    @OnClose
    public void onClose(Session session){
        System.out.println("关闭连接");
    }

	// 连接错误的时候执行
    @OnError
    public void onError(Throwable error,Session session){
        System.out.println("错误的时候执行");
        error.printStackTrace();
    }

	/**
     * websocket session发送文本本消息有两个方法;getAsyncRemote()和
     * getBasicRemote() getAsyncRemote()和getBasicRemote()是异步和同步的区别
     * 大部分情况下,推荐使用getAsyncRemote()
     * */
    public void sendMessage(String message) throws IOException{
        this.session.getAsyncRemote().sendText(message);
        // this.session.getBasicRemote().sendText(message);
    }
}

3. 测试连接

测试WebSocket是否能连接上
一个挺不错的WebSocket测试网站
在这里插入图片描述
这里要注意一下要填写完整的项目路径,我一开始只是在我电脑的IP地址后加上了/websocket,结果导致一直连接不上,后来看了一下tomcat才发现自己的项目地址没有填完整

最后希望大家都顺顺利利,永无bug永不宕机。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值