pom.xml

<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.4</version>
</dependency>

  

SimpleWebSocketServer.java

package com.geostar.gfstack.operationcenter.common.util;

import com.geostar.gfstack.framework.log.common.GeoLogger;
import com.geostar.gfstack.operationcenter.common.properties.ConfigGeoStar;
import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer; import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.Collection; public class SimpleWebSocketServer extends WebSocketServer { private static GeoLogger logger = GeoLogger.getLogger(SimpleWebSocketServer.class); private static SimpleWebSocketServer instance; public static final Integer port = ConfigGeoStar.getWebSocketPort(); @Override
public void onOpen(WebSocket conn, ClientHandshake handshake) {
logger.info("Server open!");
} @Override
public void onClose(WebSocket conn, int code, String reason, boolean remote) {
logger.info("Server closed!");
} @Override
public void onMessage(WebSocket conn, String message) {
this.sendToAll(message);
} @Override
public void onError(WebSocket conn, Exception e) {
logger.error(e.getMessage(), e);
} @Override
public void onStart() {
logger.info("Server started!");
} public void sendToAll(String text) {
Collection<WebSocket> con = connections();
synchronized (con) {
for (WebSocket c : con) {
c.send(text);
}
}
} private SimpleWebSocketServer() {
super();
try {
SimpleWebSocketServer s = new SimpleWebSocketServer(port);
s.start();
} catch (UnknownHostException e) {
e.printStackTrace();
}
} private SimpleWebSocketServer(int port) throws UnknownHostException {
super(new InetSocketAddress(port));
} public synchronized static SimpleWebSocketServer getInstance() {
if (instance == null) {
instance = new SimpleWebSocketServer();
}
return instance;
} }

  

SimpleWebSocketClient.java

package com.geostar.gfstack.operationcenter.common.util;

import com.geostar.gfstack.framework.log.common.GeoLogger;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft;
import org.java_websocket.handshake.ServerHandshake; import java.net.URI; public class SimpleWebSocketClient extends WebSocketClient { private static GeoLogger logger = GeoLogger.getLogger(SimpleWebSocketClient.class); public SimpleWebSocketClient(URI serverUri, Draft protocolDraft) {
super(serverUri, protocolDraft);
} @Override
public void onOpen(ServerHandshake serverHandshake) {
logger.info("Client open!");
} @Override
public void onMessage(String s) {
logger.info("Client message:"+s);
} @Override
public void onClose(int i, String s, boolean b) {
logger.info("Client onClose!");
} @Override
public void onError(Exception e) {
logger.error(e.getMessage(), e);
} }

  

前端js用法:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="../staticresource/fe-lib/websocket/web_socket.js"></script> <script type="text/javascript"> // Write your code in the same way as for native WebSocket:
var ws = new WebSocket('ws://192.168.30.174:8887')
ws.onopen = function() {
console.log('open')
ws.send('Hello') // Sends a message.
}
ws.onmessage = function(e) {
// Receives a message.
console.log(e.data);
}
ws.onclose = function() {
console.log('close')
} </script>
</head>
<body> </body>
</html>

  

java客户端用法:

SimpleWebSocketServer.getInstance();
URI uri = null;
WebSocketClient client = null;
try {
uri = new URI("ws://localhost:" + SimpleWebSocketServer.port);
} catch (URISyntaxException e) {
e.printStackTrace();
}
if(uri != null){
client = new SimpleWebSocketClient(uri, new Draft_6455());
client.connect();
}
if(client != null){
client.send("hello java");
}

  

web_socket.js

jdk6使用WebSocket的更多相关文章

  1. 关于tomcat7下websocket不能使用

    tomcat启动时提示 信息: JSR 356 WebSocket (Java WebSocket 1.0) support is not available when running on Java ...

  2. 漫扯:从polling到Websocket

    Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response.这让服务器很为恼火:我特么才是老大,我居然不能给小弟发消息... 轮询 老大发火了,小弟们自 ...

  3. 细说WebSocket - Node篇

    在上一篇提高到了 web 通信的各种方式,包括 轮询.长连接 以及各种 HTML5 中提到的手段.本文将详细描述 WebSocket协议 在 web通讯 中的实现. 一.WebSocket 协议 1. ...

  4. java使用websocket,并且获取HttpSession,源码分析

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...

  5. WebSocket - ( 一.概述 )

    说到 WebSocket,不得不提 HTML5,作为近年来Web技术领域最大的改进与变化,包含CSS3.离线与存储.多媒体.连接性( Connectivity )等一系列领域,而即将介绍的 WebSo ...

  6. php+websocket搭建简易聊天室实践

    1.前言 公司游戏里面有个简单的聊天室,了解了之后才知道是node+websocket做的,想想php也来做个简单的聊天室.于是搜集各种资料看文档.找实例自己也写了个简单的聊天室. http连接分为短 ...

  7. Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!

    随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...

  8. Cowboy 开源 WebSocket 网络库

    Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Pro ...

  9. 借助Nodejs探究WebSocket

    文章导读: 一.概述-what's WebSocket? 二.运行在浏览器中的WebSocket客户端+使用ws模块搭建的简单服务器 三.Node中的WebSocket 四.socket.io 五.扩 ...

随机推荐

  1. .NET开源项目 QuarkDoc 一款自带极简主义属性的文档管理系统

    有些话说在前头 因为公司产品业务重构且功能拆分组件化,往后会有很多的接口文档需要留存,所以急需一款文档管理系统.当时选型要求3点: 1.不能是云平台上的Saas服务,整个系统都要在自己公司部署维护(数 ...

  2. 今天我得鼓吹一波 Kotlin

    Kotlin 被作为 Google 官方语言也有一年多了,但除了刚宣布那个月极度火爆以外,后面生活又回归了平静.不少小伙伴紧跟 Google 爸爸的步伐,也对 Kotlin 有了或多或少的了解,Git ...

  3. MVC5+EF6入门教程——实现动态创建数据库与登录验证

    详细步骤 创建文件夹,规划好项目目录 创建相关实体类 (Data Model) 创建 Database Context 创建Initializer, 使用EF初始化数据库,插入测试数据 实现数据库登录 ...

  4. python之面向对象3

     面向对象介绍 一.面向对象和面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点 ...

  5. Log4.Net 在Winform、MVC、ashx程序里的使用,ashx程序里使用异步

    最近做一个双11活动的,是一套相关的H5页面.本来以为难度不大,但是做下来几天还是遇到些问题.就总结一下吧,还是有收获的. 1.在H5页面中,有一个遮罩层,还是挺有意思的.直接用div+css控制遮罩 ...

  6. eclipes个人配置

    设置字体:https://jingyan.baidu.com/article/f96699bb9442f3894e3c1b15.html general->appearance->colo ...

  7. 怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32

    unsigned long numComponents = CGColorGetNumberOfComponents([[UIColor blackColor] CGColor]); 2014年12月 ...

  8. Python classmethod 修饰符

    描述 classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以调用类的属性,类的方法,实例化对象等. 语法 classmethod语法: ...

  9. 【问题解决方案】之 jmeter启动报错:Not able to find Java executable or version. Please check your Java installation

    故事发生在云计算实验课上-- ** 故事发生在云计算实验课上-- Step 1 在Xshell中登录自己的cloud虚拟机后,<sudo su ->切换到root用户 Step 2 < ...

  10. docker vm 性能优劣

    Docker容器与虚拟机区别 - unixfbi.com - 博客园 http://www.cnblogs.com/pangguoping/articles/5515286.html docker与虚 ...