spring-websocket不通,求助
答案:1 悬赏:50
解决时间 2021-01-11 21:10
- 提问者网友:流星是天使的眼泪
- 2021-01-11 01:23
spring-websocket不通,求助
最佳答案
- 二级知识专家网友:青灯有味
- 2021-01-11 02:27
一:创建maven webapp项目
编辑pom.xml文件
[html] view plain copy
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.lala
tweet
1.0.0
war
UTF-8
2.2
1.2
3.0.1
4.1.7.RELEASE
4.12
org.springframework
spring-webmvc
${spring-framework.version}
javax.servlet
jstl
${jstl.version}
javax.servlet
javax.servlet-api
${servlet.version}
provided
javax.servlet.jsp
jsp-api
${jsp.version}
provided
junit
junit
${junit.version}
test
org.springframework
spring-websocket
${spring-framework.version}
com.google.code.gson
gson
2.3.1
org.apache.maven.plugins
maven-compiler-plugin
3.3
1.8
1.8
true
org.eclipse.jetty
jetty-maven-plugin
9.2.11.v20150529
foo
9999
9090
/
二:编写server endpoint
[java] view plain copy
package com.lala.action;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import com.google.gson.Gson;
public class TweetWebSocket extends TextWebSocketHandler
{
private Map clients = new ConcurrentHashMap<>();
public void handleTextMessage(WebSocketSession session, TextMessage message)
{
if(!clients.containsKey(session.getId()))
{
clients.put(session.getId(), session);
}
String data = message.getPayload();
Gson g = new Gson();
Map datas = g.fromJson(data, Map.class);
String type = datas.get("type").toString();
if("1".equals(type))
{
datas.put("pcount", clients.keySet().size() + "");
}
else if("3".equals(type))
{
clients.remove(session.getId());
datas.put("pcount", clients.keySet().size() + "");
}
TextMessage tm = new TextMessage(g.toJson(datas));
sendToAll(tm);
}
private void sendToAll(TextMessage tm)
{
try
{
for(WebSocketSession session : clients.values())
{
if(session.isOpen())
{
session.sendMessage(tm);
}
else
{
clients.remove(session.getId());
}
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
三:mvn-servlet配置
[html] view plain copy
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
index.jsp页面
[html] view plain copy
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
动弹列表
动弹列表
欢迎回来:${param.username},当前在线人数
admin 2015-07-05
请大家随意畅谈
编辑pom.xml文件
[html] view plain copy
tweet
spring-webmvc
jstl
javax.servlet-api
jsp-api
junit
spring-websocket
gson
maven-compiler-plugin
jetty-maven-plugin
二:编写server endpoint
[java] view plain copy
package com.lala.action;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import com.google.gson.Gson;
public class TweetWebSocket extends TextWebSocketHandler
{
private Map
public void handleTextMessage(WebSocketSession session, TextMessage message)
{
if(!clients.containsKey(session.getId()))
{
clients.put(session.getId(), session);
}
String data = message.getPayload();
Gson g = new Gson();
Map
String type = datas.get("type").toString();
if("1".equals(type))
{
datas.put("pcount", clients.keySet().size() + "");
}
else if("3".equals(type))
{
clients.remove(session.getId());
datas.put("pcount", clients.keySet().size() + "");
}
TextMessage tm = new TextMessage(g.toJson(datas));
sendToAll(tm);
}
private void sendToAll(TextMessage tm)
{
try
{
for(WebSocketSession session : clients.values())
{
if(session.isOpen())
{
session.sendMessage(tm);
}
else
{
clients.remove(session.getId());
}
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
三:mvn-servlet配置
[html] view plain copy
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
index.jsp页面
[html] view plain copy
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
动弹列表
欢迎回来:${param.username},当前在线人数
admin 2015-07-05
请大家随意畅谈
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯