问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【websocket】求websocet能连接的完整小例子,急!!!

发布网友 发布时间:2022-05-07 10:35

我来回答

3个回答

懂视网 时间:2022-05-13 07:36

package websocket;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.catalina.websocket.WebSocketServlet; import org.apache.catalina.websocket.StreamInbound;public class WebSocketMessageServlet extends WebSocketServlet{	/**	 * 	 */	private static final long serialVersionUID = 1L;	private String username; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)  throws ServletException, IOException { 	this.username = (String)req.getSession().getAttribute("user_nickname");  super.doGet(req, resp); } 	@Override	protected StreamInbound createWebSocketInbound(String arg0,			HttpServletRequest arg1) {		// TODO Auto-generated method stub		return new WebSocketMessageInboundPool(this.username); 	}	 } 

package websocket;import java.io.IOException;import java.nio.CharBuffer;import java.nio.ByteBuffer;import java.util.HashMap;import java.util.Map;import org.apache.catalina.websocket.MessageInbound;import org.apache.catalina.websocket.WsOutbound;public class WebSocketMessageInboundPool extends MessageInbound{		private final String user_nickname;	private static final Map Connections = new HashMap();		public WebSocketMessageInboundPool(String username){		this.user_nickname=username;	}		protected void onOpen(WsOutbound outbound) {		// TODO Auto-generated method stub		addMessageInbound(this);		super.onOpen(outbound);	}		protected void onBinaryMessage(ByteBuffer arg0) throws IOException {		// TODO Auto-generated method stub		// 向所有已连接的客户端发送文本消息		try {			//向特定的用户发送数据			WebSocketMessageInboundPool inbound = Connections.get(user_nickname);			if(inbound != null){				ByteBuffer bb = ByteBuffer.wrap(arg0.array());				WsOutbound wb = inbound.getWsOutbound();				wb.writeBinaryMessage(bb);				wb.flush();			}		}		catch (IOException e) {			e.printStackTrace();		}	}		protected void onTextMessage(CharBuffer arg0) throws IOException {		// TODO Auto-generated method stub			try {			//向特定的用户发送数据			WebSocketMessageInboundPool inbound = Connections.get(user_nickname);			if(inbound != null){			CharBuffer cb = CharBuffer.wrap(arg0);			WsOutbound wb = inbound.getWsOutbound();			wb.writeTextMessage(cb);			wb.flush();			}		}		catch (IOException e) {				e.printStackTrace();			}		}		protected void onClose(int status) {		// TODO Auto-generated method stub		removeMessageInbound(this);		super.onClose(status);	}		//向连接池中添加连接	public static void addMessageInbound(WebSocketMessageInboundPool inbound){		//添加连接		Connections.put(inbound.user_nickname, inbound);	}	public static void removeMessageInbound(WebSocketMessageInboundPool inbound){		//移除连接		Connections.remove(inbound.user_nickname);	}}	




我的握手链接是ws = new WebSocket("ws://localhost:8080/websocket/web"); // 本地
xml配置:
 	  	WebSocketMessageServlet 	websocket.WebSocketMessageServlet   	WebSocketMessageServlet 	/web   index.jsp 



但是我本地tomcat测试了还是不行,
tomcat项目lib文件夹下的jar包全都要删掉吗?



回复讨论(解决方案)

up..........................

木有人会吗?

public class WebSocketMessageServlet extends WebSocketServlet{ protected StreamInbound createWebSocketInbound(String arg0) {  System.out.println("$$$$$$$$"); return new WebSocketMessageInboundPool("1"); }


这样写就能握手,太奇怪了,明明要重载父类抽象方法才是正确的。

我在浏览器上F12看了一下,错误是这样说的

楼主你的xml配置有问题!

热心网友 时间:2022-05-13 04:44

你好阿,我做过类似的玩意,不过我用的是openfire开源框架,还有个Androidpn,这个旧更加简单了。你上网搜下,满意的话请采纳。

热心网友 时间:2022-05-13 06:02

已私信,请查收
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中美有什么经济冲突 杨凌衡水实验中学高中学费是多少 蒂芙尼珍珠项链怎么清洗和保养? tiffany&co 的缺点 如何保养蒂芙尼的项链? tiffany保养要多久时间 Tiffany珠宝需要多长时间保养? 人为什么活着,怎样活着都是无憾!! 孩子犟的不行家长怎么教育 有什么比较好用的游戏视频录制软件? 适用于Windows的10个好用的游戏录制软件 项目A的页面调用项目B的websocket,项目A的后台如何能得到项目B传输的数 ... 民生银行卡借记卡,余额查询短信号多少 民生银行手机银行查询账户余额? 中学生100字日记怎么写 初一日记100字以内的看 跪求!初中日记100字左右 社区干部应具备哪些素质和形象 有没有了解加拿大多伦多北约克Jo Moon Stone Byway这一带社区的,条件如何? 我是一名小小的社区保安,请问我需要掌握哪些英语? 新手怎么在网络上宣传推广? 网络推广的方法都有哪些?哪些最有效? 社区公园里的白鸽,和我的长安CS75一起去 北京顺义居民记录“战时状态”,市民们能有条不紊的配合,说明了什么? 社区小小志愿者怎么做《三年级》 保护环境.绿化家园 资料 年赚50万的小小社区母婴店为什么婴儿车免费送? 小小社区怎么打不开 小社区玩转大数据 高科技进入百姓家 - 信息提示 如何申请一个字的百度id 进盐蒸房需要蒸多久,多久蒸一次 夏普打印机的出纸键是哪个 可以天天盐蒸吗 蒸桑拿分为盐蒸和汗蒸,请问盐蒸杀精吗? AR-2048S打印机怎么使用老是卡纸 好看的BL动漫 人物要美型 剧情要好看 我的世界怎么弄钻石剑锋利4 我的世界怎么用命令方块做一把附魔所以顶级的钻石剑。 所以的附魔。 谁有bl年下攻的,怎样都行,推荐 邮箱840801550@qq.com 我的世界手机版最新版的钻石剑怎么附魔 我的世界的钻石剑怎么附魔?0.13版本的。 有哪些好看的BL小说啊 华为手机的免费寄修服务怎么启动呢? 华为寄修服务要哪个app 跪求:09年9月思想汇报一份,1200字左右 急求2011年秋季入党积极分子思想汇报,围绕一个主题,1200字左右,我是研究生,要求结合实际谈 我已经有今日头条账号,今日头条账号是不是头条号,如果不是,怎样才能注册头条号, 铁锅洋芋焖饭怎么做? sql server 2008数据库数据怎么导到mysql数据库 老年妇女爱啰嗦爱抱怨是什么原因