WebSocket-java实现
一、所需jar

二、创建websocket.jsp(注意此页面链接,需要链接到自己的服务)
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <html><head><title>Web Socket Client</title></head>
<body>
<script type="text/javascript">
var socket;
if (!window.WebSocket) {
window.WebSocket = window.MozWebSocket;
}
// Javascript Websocket Client
if (window.WebSocket) {
socket = new WebSocket("ws://192.168.1.168:8080/websocketDemo/ws?123123");
socket.onmessage = function(event) {
var ta = document.getElementById('responseText');
ta.value = ta.value + '\n' + event.data
};
socket.onopen = function(event) {
var ta = document.getElementById('responseText');
ta.value = "Web Socket opened!";
};
socket.onclose = function(event) {
var ta = document.getElementById('responseText');
ta.value = ta.value + "Web Socket closed";
};
socket.onerror = function(event) {
onError(event);
};
} else {
alert("Your browser does not support Web Socket.");
}
// Send Websocket data
function send(message) {
if (!window.WebSocket) { return; }
if (socket.readyState == WebSocket.OPEN) {
socket.send(message);
} else {
alert("The socket is not open.");
}
}
</script>
<h3>Send :</h3>
<form onsubmit="return false;">
<input type="text" name="message" value="Hello World!"/><input type="button" value="Send Web Socket Data" onclick="send(this.form.message.value)" />
<h3>Receive :</h3>
<textarea id="responseText" style="width:500px;height:300px;"></textarea>
</form>
</body>
</html>
三、创建服务类WebSocketServer.java
package com.sh.test; import java.util.ArrayList;
import java.util.List; import javax.servlet.jsp.tagext.TryCatchFinally;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint; import org.springframework.asm.commons.TryCatchBlockSorter; /**
* WebSocket服务
*
*/
@ServerEndpoint("/ws")
public class WebSocketServer{ private static List<WebSocketServer> wslist = new ArrayList<WebSocketServer>(); private Session session; public WebSocketServer() {
}
/**
* 连接后执行
* @param session
*/
@OnOpen
public void onOpen(Session session) {
System.out.println("连接开启");
String str = session.getQueryString();//获取开启后的参数 链接?后面的字符串
wslist.add(this); this.session = session;
} /**
* 接到消息执行
* @param session
* @param msg
*/
@OnMessage
public void message(Session session, String msg) {
for(WebSocketServer wss : this.wslist) {//可循环对所有人广播,也可单独对一人广播
if(wss.session != null && wss.session.isOpen()) {
wss.session.getAsyncRemote().sendText(wss.session.getId()+" send msg "+msg);
}
}
} /**
* 关闭后执行执行
* @param session
*/
@OnClose
public void onClose(Session session) {
System.out.println("连接关闭");
if(wslist.contains(this)) {
wslist.remove(this);
}
}
/**
* 关闭浏览器后执行
* @param t
*/
@OnError
public void onError(Throwable t) {
if(wslist.contains(this)) {
wslist.remove(this);
}
} }
四、创建测试方法TestController.java
package com.sh.test; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; @Controller
public class TestController {
private void TestController() {}
@RequestMapping(value = "/ws", method = RequestMethod.GET)
public String ws(HttpServletRequest request, HttpServletResponse response) {
return "/websocket";
} }
五、使用TomCat运行项目,即可通讯
http://192.168.1.168:8080/wstest/ws
WebSocket-java实现的更多相关文章
- WebSocket+Java 私聊、群聊实例
		
前言 之前写毕业设计的时候就想加上聊天系统,当时已经用ajax长轮询实现了一个(还不懂什么是轮询机制的,猛戳这里:https://www.cnblogs.com/hoojo/p/longPolling ...
 - SpringBoot集成websocket(java注解方式)
		
第一种:SpringBoot官网提供了一种websocket的集成方式 第二种:javax.websocket中提供了元注解的方式 下面讲解简单的第二种 添加依赖 <dependency> ...
 - Java实现Websocket
		
Websocket介绍 在一个 WebSocket应用中, 服务器发布一个 WebSocket端点, 客户端使用这个端点的URI来连接服务器.建立连接之后,websocket协议是对称的;客户端和服务 ...
 - java websocket中的ping-pong 机制
		
参考源码: https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/java/org/java_websocket/cli ...
 - Websocket实现Java后台主动推送消息到前台
		
写在前面 需求: 项目测试, 缺少用户登录失败给admin推送消息, 想到这个方式, 当用户登录失败时, admin用户会在页面看到咣咣乱弹的alert. 正文 pom.xml <!-- web ...
 - Spring 4 官方文档学习(十四)WebSocket支持
		
个人提示:如果需要用到页面推送,高频且要低延迟,WebSocket无疑是最佳选择.否则还是轮询和long polling吧. 做了一个小demo放在码云上,有兴趣的可以看一下,简单易懂:websock ...
 - 关于tomcat7下websocket不能使用
		
tomcat启动时提示 信息: JSR 356 WebSocket (Java WebSocket 1.0) support is not available when running on Java ...
 - 【转】Spring websocket 使用
		
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html https://spr ...
 - Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader
		
1.错误描写叙述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -he ...
 - java websockect
		
https://github.com/TooTallNate/Java-WebSocket (websockect类库包) http://blog.openlg.net/index.php/archi ...
 
随机推荐
- Caffe Blob测试
			
本例子来源于<21天实战Caffe> 代码如下: #include <vector> #include <iostream> #include <caffe/ ...
 - http协议:http请求、http响应、间隔时间跳转页面、禁用浏览器缓存
			
转自:https://blog.csdn.net/u013372487/article/details/46991623 http协议 1. http协议是建立在 tcp/ip协议基础上. 2. 我 ...
 - Windows defender怎么才能彻底关闭?
			
据不久前的一项测试表明,Windows系统自带的Windows defender软件在所有参与测试的杀毒安全软件中对win10的运行速度影响最大. 而Win10系统的Windows defender会 ...
 - Delphi 音频播放
			
樊伟胜
 - 使用busybox1.21.1制作根文件系统
			
1. 下载源码 https://busybox.net/downloads/ 2. 解压 3. 修改Makefile ~/busybox-1.21.1$ vi Makefile 164行: 修改前:C ...
 - 使用tinyproxy进行ip代理
			
爬虫经常用到ip代理.解决方案无非几种: 1.网络上寻找一些免费代理,优点:免费不限量:缺点:可用性较低,验证费时间费资源.一些有免费代理的网站,西刺代理,站大爷,89免费代理等等,网上可以搜出一大堆 ...
 - 如何在GitBook中使用Git管理
			
1.在GitBook中新建[Book],找到对应目录下的位置,拷贝[book]名称后删除文件夹以及文件,新建文件夹重命名为[book]名称 2.打开文件夹,在根目录下选择创建git仓库,即 git i ...
 - 复习rem
			
在Web页面制作中,我们一般使用“px”来设置我们的文本,因为他比较稳定和精确.但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小(虽然一般人不会去改变浏览 ...
 - Host服务
			
这也是看网上的例子自己跟着配置做的一个小demo,这里记录一下. 一.创建一个空的控制台应用程序 二.安装所需dll 1.Quartz Install-Package Quartz -Version ...
 - BZOJ 1015 并查集&连通块
			
很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道互相直接或 ...