java编写的Websocket服务端
来源:互联网 发布:中文翻译文言文的软件 编辑:程序博客网 时间:2024/06/05 14:58
环境:jdk1.8
开发工具:eclipse
服务器:tomcat8.0
在tomcat8.0中,有这么一个API:F:\apache-tomcat-8.0.26\lib\websocket-api.jar,这里面有我们封装好的一些协议。
package com.lgy.websocket;import java.io.IOException;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;import java.util.concurrent.atomic.AtomicInteger;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;import com.lgy.util.HTMLFilter;@ServerEndpoint(value = "/chatWebsocket")public class ChatWebsocket {private static final AtomicInteger connectionIds = new AtomicInteger(0);private static final Set<ChatWebsocket> connections = new CopyOnWriteArraySet<ChatWebsocket>();private final Integer num;private Session session;public ChatWebsocket() {num = connectionIds.getAndIncrement();}// 建立连接@OnOpenpublic void start(Session session) {this.session = session;connections.add(this);System.out.println("当前连接的数量为:" + num);}//客户端关闭了连接@OnClose public void end() { connections.remove(this); System.out.println("有一个断开连接,当前连接的数量为:" + num); //broadcast(message); }//WebSocket服务出错@OnError public void onError(Throwable t) throws Throwable { //log.error("Chat Error: " + t.toString(), t);System.out.println("Chat error :" + t.toString()); }//接受消息@OnMessage public void incoming(String message) {String msg = HTMLFilter.filter(message); System.out.println(msg); //broadcast(filteredMessage); broadcast(msg.toString()); }//广播public static void broadcast(String msg) { for (ChatWebsocket client : connections) { try { synchronized (client) { client.session.getBasicRemote().sendText(msg); } } catch (IOException e) { //log.debug("Chat Error: Failed to send message to client", e); connections.remove(client); try { client.session.close(); } catch (IOException e1) { // Ignore } } } }}
这段代码就是我们的服务端的代码。
服务端主动推送消息:
package com.lgy.controller;import java.util.HashMap;import java.util.Map;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.lgy.websocket.ChatWebsocket;@Controller@RequestMapping("/broadcast")public class BroadcastController {@RequestMapping("")@ResponseBodypublic Object Msg() {Map<String, String> msg = new HashMap<>();ChatWebsocket.broadcast("HAHAH");msg.put("msg", "服务器推送消息成功");return msg;}}
0 0
- java编写的Websocket服务端
- java编写WebSocket服务端
- IdHTTPServer完成websocket服务端编写
- Java WebSocket服务端实现
- java-websocket 服务端 开发中遇到的问题
- [JAVA web服务端]用wsdl2java简化服务端的编写
- netty的websocket服务端开发
- Websocket服务端实现的方法
- JAVA Sokcet(服务端)连接WebSocket个人总结
- websocket实现QQ聊天一之一(服务端编写)
- 一个用python写的websocket服务端
- 使用websocket接收服务端传来的图片
- 基于WebSocket的Android与服务端通信
- Java编写的HighCharts服务端图表下载程序
- 编写服务端程序的要点
- 服务端编写前的准备工作
- WebSocket握手服务端响应算法『java』
- 2、Java WebSocket实现服务端主动发消息给客户端
- 微软XSD工具根据XSD文件生成的C#类中多余Specified属性问题
- 网狐棋牌(六) DataBaseEngine 和 网狐棋牌(七) CEventService
- tomcat7.0.59对el取消过滤java关键字的设置
- iOS中关于UItableview中代理heightForRowAtIndexPath调用次数和顺序的系统差异性
- expdp\impdp及exp\imp__Oracle
- java编写的Websocket服务端
- 利用UIImageJPEGRepresentation与UIGraphicsBeginImageContext进行图片压缩的简单比较
- java二分查找
- bind1st 和 bind2nd 解析
- Android中layout_weight的基本使用
- linux下文件重定向的问题,/dev/null
- NC瑞士军刀的具体使用方法
- java并发编程入门
- jdk环境变量的配置