WebSocket -- 一个简单的Demo

环境

JDK  1.7.0_79  Tomcat 7.0.57  Eclipse 4.5 

jar 包

tomcat7-websocket.jar

websocket.api.jar

这两个jar包tomcat里面有,由于我是用的maven,刚一开始我把这两个jar包依赖到pom中的,所以在启动tomcat的时候会报错 (org.apache.catalina.deploy.WebXml addFilter)

最后我把这两个jar包直接加到了WEB-INF/lib下面,就不报错了。

代码

WebSocketConfig.java

public class WebSocketConfig implements ServerApplicationConfig {

	@Override
	public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scan) {
		System.out.println("config............"+scan.size());
		//返回  过滤作用
		return scan;
	}

	@Override
	public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> arg0) {
		return null;
	}

}

EchoSocket.java

@ServerEndpoint("/echo")
public class EchoSocket {

	
	@OnOpen
	public void open(Session session){
		System.out.println(session.getId());
	}
	
	@OnClose
	public void close(Session session){
		System.out.println("sessionId:"+session.getId()+"关闭了!");
	}
	
	@OnMessage
	public void message(Session session, String msg){
		System.out.println("客户端信息:"+msg);
		
		try {
			session.getBasicRemote().sendText("客户端说:I'm fine thank you!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
JS代码

<script type="text/javascript">
			var ws;
			var target = "ws://localhost:8888/irevisit-web/echo";
			function subOpen(){
				if ('WebSocket' in window) {
				    ws = new WebSocket(target);
				} else if ('MozWebSocket' in window) {
				    ws = new MozWebSocket(target);
				} else {
				    alert('WebSocket is not supported by this browser.');
				    return;
				}
				ws.onmessage = function(event){
					console.info(event.data);
					var dv = document.getElementById("dv");
					dv.innerHTML+="<p>"+event.data+"</p></br>";
				};
				
			}
			
			function subSend(){
				var msg = document.getElementById("msg").value;
				ws.send(msg);
				document.getElementById("msg").value = "";
			}
</script>
<body>
<span style="white-space:pre">	</span><button οnclick="subOpen();">open</button>
<span style="white-space:pre">	</span><input id="msg"><button οnclick="subSend();">Send</button>
<span style="white-space:pre">	</span><div id="dv"></div>
</body>
<span style="white-space:pre">	</span>还有一个问题 , 就是项目配置的拦截把websoket的请求给拦截了 , 后来在web.xml里面加了一句
<span style="white-space:pre">	<servlet-mapping>
<span style="white-space:pre">		</span><servlet-name>default</servlet-name>
<span style="white-space:pre">		</span><url-pattern>/echo</url-pattern>
<span style="white-space:pre">	</span></servlet-mapping></span>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值