package com.java.websocket;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import com.java.util.Constants;
public class TextMessageHandler extends TextWebSocketHandler {
private static final Map<String, WebSocketSession> users;
static {
users = new HashMap<String, WebSocketSession>();
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
/*
* 链接成功后会触发此方法,可在此处对离线消息什么的进行处理
*/
users.put(session.getId(), session);
String username = (String) session.getAttributes().get(Constants.DEFAULT_WEBSOCKET_USERNAME);
System.out.println(username + " connect success ...");
session.sendMessage(new TextMessage(username + " 链接成功!!"));
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
super.handleMessage(session, message);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
/*
* 前端 websocket.send() 会触发此方法
*/
System.out.println("message -> " + message.getPayload());
super.handleTextMessage(session, message);
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
if (session.isOpen()) {
session.close();
}
System.err.println(exception.getMessage());
System.out.println("websocket connection closed error......");
users.remove(session.getId());
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
System.out.println("websocket connection closed......");
users.remove(session.getId());
}
public void sendMessageToUser(String username, TextMessage message) {
Iterator<Map.Entry<String, WebSocketSession>> it = userIterator();
while (it.hasNext()) {
WebSocketSession session = it.next().getValue();
if (username.equals(session.getAttributes().get(Constants.DEFAULT_WEBSOCKET_USERNAME))) {
try {
if (session.isOpen())
session.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void sendMessageToUsers(TextMessage message) {
Iterator<Map.Entry<String, WebSocketSession>> it = userIterator();
while (it.hasNext()) {
WebSocketSession session = it.next().getValue();
try {
if (session.isOpen())
session.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private Iterator<Map.Entry<String, WebSocketSession>> userIterator() {
Set<Map.Entry<String, WebSocketSession>> entrys = users.entrySet();
return entrys.iterator();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
java.zip (90个子文件)
java
src
com
java
dao
DaoSupport.java 3KB
DAO.java 1KB
controller
MessageController.java 1KB
LoginController.java 751B
UserController.java 1KB
model
User.java 397B
websocket
WebSocketConfig.java 1KB
TextMessageHandler.java 3KB
HandshakeInterceptor.java 2KB
util
JsonResult.java 1KB
Constants.java 277B
service
UserService.java 146B
impl
UserServiceImpl.java 567B
commons
InterfaceFilter.java 1KB
jdbc.properties 329B
resources
application-context.xml 4KB
springmvc-servlet.xml 2KB
mybatis
UserMapper.xml 2KB
.classpath 771B
build
classes
com
java
dao
DAO.class 468B
DaoSupport.class 3KB
controller
UserController.class 2KB
MessageController.class 2KB
LoginController.class 1KB
model
User.class 861B
websocket
HandshakeInterceptor.class 3KB
WebSocketConfig.class 2KB
TextMessageHandler.class 5KB
util
Constants.class 269B
JsonResult.class 2KB
service
UserService.class 210B
impl
UserServiceImpl.class 969B
commons
InterfaceFilter.class 2KB
jdbc.properties 329B
resources
application-context.xml 4KB
springmvc-servlet.xml 2KB
mybatis
UserMapper.xml 2KB
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 345B
org.eclipse.core.resources.prefs 57B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.component 470B
.jsdtscope 567B
org.eclipse.jdt.core.prefs 670B
org.eclipse.wst.validation.prefs 1KB
WebContent
META-INF
MANIFEST.MF 39B
jsp
index.jsp 1KB
message.jsp 945B
login.jsp 394B
resources
js
jquery-1.9.1.min.js 90KB
sockjs.min.js 33KB
index.jsp 554B
message.jsp 945B
WEB-INF
lib
spring-aop-4.0.5.RELEASE.jar 344KB
spring-orm-4.0.5.RELEASE.jar 358KB
spring-webmvc-4.0.5.RELEASE.jar 647KB
spring-beans-4.0.5.RELEASE.jar 654KB
spring-context-support-4.0.5.RELEASE.jar 132KB
aopalliance.jar 4KB
spring-websocket-4.0.5.RELEASE.jar 271KB
jackson-databind-2.2.1.jar 845KB
mysql-connector-java-5.1.34.jar 938KB
spring-core-4.0.5.RELEASE.jar 953KB
spring-webmvc-portlet-4.0.5.RELEASE.jar 171KB
commons-lang.jar 166KB
spring-jdbc-4.0.5.RELEASE.jar 415KB
mybatis-ehcache-1.0.3.jar 11KB
jackson-core-asl-1.8.8.jar 222KB
commons-logging-1.2.jar 60KB
spring-tx-4.0.5.RELEASE.jar 242KB
jackson-annotations-2.2.1.jar 33KB
spring-context-4.0.5.RELEASE.jar 954KB
mybatis-3.2.1.jar 685KB
commons-beanutils.jar 184KB
log4j-1.2.17.jar 478KB
jackson-module-jaxb-annotations-2.2.1.jar 25KB
spring-oxm-4.0.5.RELEASE.jar 79KB
commons-pool-1.6.jar 109KB
mybatis-oscache-1.0.1.jar 10KB
json-lib-2.2.2-jdk15.jar 141KB
jstl-1.2.jar 405KB
ezmorph-1.0.6.jar 84KB
mybatis-spring-1.2.0.jar 48KB
jackson-mapper-asl-1.8.8.jar 653KB
spring-web-4.0.5.RELEASE.jar 657KB
jackson-core-2.2.1.jar 188KB
commons-collections-3.1.jar 546KB
spring-expression-4.0.5.RELEASE.jar 200KB
web.xml 3KB
.project 1KB
共 90 条
- 1
资源评论
- 捡贝壳的小男孩2019-05-28数据库呢在哪
- qnzhangqing2018-08-26很好谢谢。
s五叶s
- 粉丝: 6
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功