中易网

spring-websocket不通,求助

答案:1  悬赏:50  
解决时间 2021-01-11 21:10
spring-websocket不通,求助
最佳答案
一:创建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
请大家随意畅谈








我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯