前言
公司大屏需要用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永不宕机。