1、后台代码Websocket.java
package com.sinosoft.tyoa.websocket;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
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;
@ServerEndpoint("/websocket")
public class Websocket {
private static Map<String,Session> sessionMap = new Hashtable<String,Session>();
@OnMessage
public void onMessage(String message, Session currentSession) {
/*// Send the message to the client
Set<Map.Entry<String,Session>> set = sessionMap.entrySet();
for (Map.Entry<String,Session> session: set) {
if(session.getValue().isOpen() == true) {
try {
System.out.println(session.getValue());
session.getValue().getBasicRemote().sendText(message);
} catch (IOException e) {
sessionMap.remove(session.getValue());
//e.printStackTrace();
}
}
else {
System.out.println("close:"+session.getValue());
sessionMap.remove(session.getValue());
}
}*/
//服务器往各个客户端发送消息
Iterator<String> iterator = sessionMap.keySet().iterator();
while(iterator.hasNext()) {
String key = (String) iterator.next();
Session session = sessionMap.get(key);
if(session.isOpen() == true) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
iterator.remove();
sessionMap.remove(key);
//e.printStackTrace();
}
}
else {
iterator.remove();
sessionMap.remove(key);
}
}
}
@OnOpen
public void onOpen(Session currentSession) {
if(sessionMap.containsValue(currentSession) == false){
sessionMap.put(currentSession.getId(), currentSession);
}
//System.out.println("Client connected");
}
@OnClose
public void onClose(Session currentSession) throws IOException{
sessionMap.remove(currentSession.getId());
//System.out.println("Client closed");
}
@OnError
public void onClose(Session currentSession,java.lang.Throwable throwable) throws IOException{
sessionMap.remove(currentSession.getId());
//System.out.println("Client closed");
}
}
2、pom.xml文件配置
<!-- websocket -->
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<!-- websocket end -->
3、前台页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = "ws" + "://"+ request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<script type="text/javascript">
var wsURI = "<%=basePath%>websocket";
var websocket = null;
function connectWebSocket(wsURI) {
if(websocket == null) {
websocket = new WebSocket(wsURI);
websocket.onopen = function(openEvent) {
$("#showMsg").append("连接成功...<br/>");
};
websocket.onclose = function(closeEvent) {
websocket == null;
$("#showMsg").append("关闭连接成功...<br/>");
};
websocket.onmessage = function(messageEvent) {
$("#showMsg").append("<span style='display:block'>" + messageEvent.data + "</span>");
};
websocket.onerror = function(errorEvent) {
//alert(errorEvent.data);
};
}
}
function sendMessageToClient(message) {
websocket.send(message);
}
$("#sendButton").click(function() {
sendMessageToClient($("#msg").val());
$("#msg").val("");
});
$(function(){
if(!("WebSocket" in window)){
alert("浏览器不支持!");
}
else {
connectWebSocket(wsURI);
}
});
</script>
<body>
<div id="showMsg" style="border: 1px solid; width: 500px; height: 400px; overflow: auto;"></div>
<div>
<input type="text" id="msg" />
<input type="button" id="sendButton" value="发送" />
</div>
</body>
3、
出现错误可能原因:项目有拦截器,把/webscoket添加到可访问路径;jar包配置问题,tomcat7有支持jar包,所有pom.xml里面要依赖jar包要设置编译需要而发布不需要。
分享到:
相关推荐
在WebSocket小例子中,我们通常会涉及以下几个关键概念: 1. **握手(Handshake)**:WebSocket连接的建立始于一个HTTP升级请求,这个过程称为握手。客户端通过发送一个"Upgrade"头字段,请求将连接升级到WebSocket...
以上就是一个简单的WebSocket在Java(JDK 1.8)和Tomcat 8中的实现例子。实际应用中,可能需要处理更复杂的业务逻辑,如连接池管理、消息编码解码、错误处理等。此外,还可以考虑使用WebSocket库,如Jetty的...
WebSocket简单例子(包含一个WebSocket例子、一个SockJS例子、一个STOMP例子) 一个WebSocket例子:基于HTML5 一个SockJS例子:SockJS是对WebSocket做了封装,因为有些环境可能不支持WebSocket,SockJS会智能选择...
在C#中,WebSocket的使用主要依赖于.NET Framework或.NET Core的相关库。本实例是一个基于C#的WebSocket应用,包括服务端和客户端的源代码,适用于Visual Studio 2017开发环境。 首先,我们来看服务端部分。服务端...
WebSocket是Web交互技术的...为了学习这个例子,你需要解压文件,理解每个部分的作用,然后可以在本地的Tomcat环境中部署和运行这个WebSocket聊天室应用。通过这种方式,你可以深入理解WebSocket的工作原理和实际应用。
1. 这是一个android应用websocket的例子 2. 文件包含以android作为客户端的代码,使用到websocket的库从这里下载 http://autobahn.ws/android/downloads/ 3. 安装notejs http://nodejs.org/ 在notejs上安装ws(即...
在这个示例中,我们使用了SockJS和Stomp库来创建WebSocket连接,并订阅了`/topic/messages`主题以接收服务器发送的消息。同时,我们定义了一个`sendMessage`函数,用于将用户输入的消息发送到服务器。 最后,为了让...
通过这个简单的例子,你已经了解了如何使用Spring WebSocket创建一个基本的聊天功能。然而,Spring WebSocket还支持更多的高级特性,如消息代理、用户会话管理和自定义消息类型。在实际开发中,可以根据需求进一步...
用于网页端的websocket代码,亲测可用。用于网页端的websocket代码,亲测可用。
在"Netty实现WebSocket例子"中,我们将探讨如何使用Netty来搭建WebSocket服务器,并实现客户端与服务器之间的双向通信。首先,我们需要理解WebSocket的基本概念和工作原理。WebSocket协议是基于TCP的,它通过HTTP的...
在本项目"spring+websocket+hibernate小例子"中,开发者通过集成Spring框架、WebSocket技术和Hibernate ORM,创建了一个小型的交互式应用。这个应用能够实现实时通信,并且能够与数据库进行数据交互,展示了现代Web...
在微信小程序中,可以使用`wx.connectSocket()`初始化WebSocket连接,并通过`wx.onSocketOpen()`, `wx.onSocketMessage()`, `wx.sendSocketMessage()`等方法进行操作。例如: ```javascript wx.connectSocket({ ...
下面将详细阐述WebSocket的原理、配置以及如何在Java环境下使用WebSocket,特别是结合Tomcat7和JDK1.8。 1. **WebSocket协议基础** WebSocket协议是基于TCP的,它通过握手过程(HTTP Upgrade头)将普通的HTTP连接...
下面将详细介绍WebSocket的基本概念、使用场景以及如何在Java环境中实现WebSocket通信。 WebSocket协议的诞生是为了克服HTTP协议的限制,HTTP协议是无状态的,每次请求-响应完成后都会断开连接,而WebSocket可以...
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它...这个例子通过简单的HTML和JavaScript展示了如何使用WebSocket API进行基本的连接和通信,对于理解WebSocket的工作原理和应用开发具有很高的参考价值。
Netty和WebSocket是现代网络应用开发中的两个重要技术,它们结合使用可以构建高效、实时的双向通信聊天室。本文将详细介绍这两个技术以及如何利用它们创建一个支持私聊功能的聊天室。 **Netty简介** Netty是一个高...
这个"WebSocketSharp 范例"是为了解决旧版.NET Framework下无法轻易使用WebSocket的问题。 首先,WebSocketSharp库提供了易于使用的API,包括创建WebSocket服务器和客户端的类。`WebSocketServer`类用于构建服务器...
在Qt框架下,我们可以使用Qt网络模块中的QWebSocket类来实现WebSocket客户端。下面我们将深入探讨如何在Qt中编写WebSocket客户端代码。 首先,理解Qt中的QWebSocket类是关键。QWebSocket是Qt提供的一个网络类,用于...
websocket简单例子 websocket简单例子websocket简单例子能跑起来
总的来说,这个"spring 结合 websocket 做的小例子"是一个基础的实时消息推送系统,展示了Spring如何与WebSocket技术集成,以实现实时通信和广播消息给所有用户的功能。通过深入理解并实践这个例子,开发者可以掌握...