当前位置: 代码迷 >> 综合 >> struts1 配置 websocket
  详细解决方案

struts1 配置 websocket

热度:1   发布时间:2024-01-04 12:09:26.0



由于公司框架陈旧,现在还在使用struts1框架,但在写一个功能的时候,又不得已用到websocket,不得不探讨一下,在struts下如何使用websocket。

和struts2框架不同,struts1中没有过滤器功能,因此不需在struts.xml中配置 <constant name="struts.action.excludePattern" value="/websocket*,^ws://.$"/>

错了,struts1是配置struts-config.xml,也就是说,struts-config.xml中不需要做任何配置,本人曾尝试在web.xml中配置servlet,和servletMaping,但没什么卵用,

最后发现,只要包引对就好了,之前使用的maven配置,不对,最后在tomcat下,找到这两个包,build path一下,就好了。

server端使用

@ServerEndpoint("/websocket")
public class WebSocket {@OnOpenpublic void open(Session session) {// 添加初始化操作System.out.println("正在连接");}/*** 接受客户端的消息,并把消息发送给所有连接的会话* @param message 客户端发来的消息* @param session 客户端的会话*/@OnMessagepublic void getMessage(String message, Session session) { //TODOSystem.out.println("收到消息");try {session.getBasicRemote().sendText("{'message':'ni hao ,shou dao xiao xi.'}");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@OnClosepublic void close() {// 添加关闭会话时的操作}@OnErrorpublic void error(Throwable t) {// 添加处理错误的操作System.out.println(t.getMessage());System.out.println(t.getCause());t.printStackTrace();}
}
html5端:

  if(!("WebSocket" in window)){alert("bu zhi chi WebSocket");}// 创建一个Socket实例try{socket = new WebSocket('ws://localhost:8081/AssistSystem/websocket'); }catch(e){console.log(e);}// 打开Socket socket.onopen = function(event) { console.log("打开Socket");};// 监听消息socket.onmessage = function(event) { console.log('Client received a message',event); 	}; // 监听Socket的关闭socket.onclose = function(event) { console.log('Client notified socket has closed',event); }; // 关闭Socket.... //socket.close() 

一切搞定!

  相关解决方案