websocket简单实现
websocket简单实现,能够对websocket进行一些实现,对初学websocket的人有一定好处。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-31 11:58 JavaWebSocket
目录 0 2016-02-16 15:41 JavaWebSocket.idea
文件 13 2016-02-16 15:08 JavaWebSocket.idea.name
目录 0 2016-02-16 15:10 JavaWebSocket.ideaartifacts
文件 305 2016-02-16 15:10 JavaWebSocket.ideaartifactsJavaWebSocket_war.xml
文件 672 2016-02-16 15:10 JavaWebSocket.ideaartifactsJavaWebSocket_war_exploded.xml
文件 1202 2016-02-16 15:08 JavaWebSocket.ideacompiler.xml
目录 0 2016-02-16 15:08 JavaWebSocket.ideacopyright
文件 76 2016-02-16 15:08 JavaWebSocket.ideacopyrightprofiles_settings.xml
目录 0 2016-02-16 15:10 JavaWebSocket.idealibraries
文件 549 2016-02-16 15:10 JavaWebSocket.idealibrariesMaven__com_sun_mail_javax_mail_1_5_0.xml
文件 551 2016-02-16 15:10 JavaWebSocket.idealibrariesMaven__javax_activation_activation_1_1.xml
文件 507 2016-02-16 15:10 JavaWebSocket.idealibrariesMaven__javax_javaee_api_7_0.xml
文件 1727 2016-02-16 15:11 JavaWebSocket.ideamisc.xml
文件 266 2016-02-16 15:08 JavaWebSocket.ideamodules.xml
文件 8792 2016-02-16 15:41 JavaWebSocket.ideauiDesigner.xml
文件 164 2016-02-16 15:08 JavaWebSocket.ideavcs.xml
文件 45206 2016-02-16 16:49 JavaWebSocket.ideaworkspace.xml
文件 1701 2018-10-31 10:26 JavaWebSocketJavaWebSocket.iml
文件 903 2018-10-31 11:58 JavaWebSocketpom.xml
目录 0 2016-02-16 15:08 JavaWebSocketsrc
目录 0 2016-02-16 15:10 JavaWebSocketsrcmain
目录 0 2016-02-16 15:38 JavaWebSocketsrcmainjava
目录 0 2016-02-16 15:38 JavaWebSocketsrcmainjavame
目录 0 2016-02-16 15:38 JavaWebSocketsrcmainjavamegacl
目录 0 2018-10-31 10:26 JavaWebSocketsrcmainjavamegaclwebsocket
文件 2991 2018-10-31 10:26 JavaWebSocketsrcmainjavamegaclwebsocketWebSocketTest.java
目录 0 2016-02-16 16:49 JavaWebSocketsrcmain
esources
目录 0 2018-10-31 14:00 JavaWebSocketsrcmainwebapp
文件 1933 2018-10-31 14:00 JavaWebSocketsrcmainwebappindex.jsp
目录 0 2016-02-16 15:08 JavaWebSocketsrcmainwebappWEB-INF
............此处省略39个文件信息
package me.gacl.websocket;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端
* 注解的值将被用于监听用户连接的终端访问URL地址客户端可以通过这个URL来连接到WebSocket服务器端
*/
@ServerEndpoint(“/websocket“)
public class WebSocketTest {
//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
/**
* 连接建立成功调用的方法
* @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
@OnOpen
public void onOpen(Session session){
this.session = session;
webSocketSet.add(this); //加入set中
addOnlineCount(); //在线数加1
System.out.println(“有新连接加入!当前在线人数为“ + getOnlineCount());
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose(){
webSocketSet.remove(this); //从set中删除
subOnlineCount(); //在线数减1
System.out.println(“有一连接关闭!当前在线人数为“ + getOnlineCount());
}
/**
* 收到客户端消息后调用的方法
* @param message 客户端发送过来的消息
* @param session 可选的参数
*/
@OnMessage
public void onMessage(String message Session session) {
System.out.println(“来自客户端的消息:“ + message);
//群发消息
for(WebSocketTest item: webSocketSet){
try {
item.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
continue;
}
}
}
/**
* 发生错误时调用
* @param session
* @param error
*/
@onerror
public void onerror(Session session Throwable error){
System.out.println(“发生错误“);
error.printStackTrace();
}
/**
* 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。
* @param message
* @throws IOException
*/
public void sendMessage(String message) throws IOException{
this.session.getBasicRemote().sendText(message);
//this.session.getAsyncRemote().sendText(message);
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
WebSocketTest.onlineCount++;
}
public static synchronized void subOnlineCount() {
WebSocketTest.onlineCount--;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-31 11:58 JavaWebSocket
目录 0 2016-02-16 15:41 JavaWebSocket.idea
文件 13 2016-02-16 15:08 JavaWebSocket.idea.name
目录 0 2016-02-16 15:10 JavaWebSocket.ideaartifacts
文件 305 2016-02-16 15:10 JavaWebSocket.ideaartifactsJavaWebSocket_war.xm
文件 672 2016-02-16 15:10 JavaWebSocket.ideaartifactsJavaWebSocket_war_exploded.xm
文件 1202 2016-02-16 15:08 JavaWebSocket.ideacompiler.xm
目录 0 2016-02-16 15:08 JavaWebSocket.ideacopyright
文件 76 2016-02-16 15:08 JavaWebSocket.ideacopyrightprofiles_settings.xm
目录 0 2016-02-16 15:10 JavaWebSocket.idealibraries
文件 549 2016-02-16 15:10 JavaWebSocket.idealibrariesMaven__com_sun_mail_javax_mail_1_5_0.xm
文件 551 2016-02-16 15:10 JavaWebSocket.idealibrariesMaven__javax_activation_activation_1_1.xm
文件 507 2016-02-16 15:10 JavaWebSocket.idealibrariesMaven__javax_javaee_api_7_0.xm
文件 1727 2016-02-16 15:11 JavaWebSocket.ideamisc.xm
文件 266 2016-02-16 15:08 JavaWebSocket.ideamodules.xm
文件 8792 2016-02-16 15:41 JavaWebSocket.ideauiDesigner.xm
文件 164 2016-02-16 15:08 JavaWebSocket.ideavcs.xm
文件 45206 2016-02-16 16:49 JavaWebSocket.ideaworkspace.xm
文件 1701 2018-10-31 10:26 JavaWebSocketJavaWebSocket.iml
文件 903 2018-10-31 11:58 JavaWebSocketpom.xm
目录 0 2016-02-16 15:08 JavaWebSocketsrc
目录 0 2016-02-16 15:10 JavaWebSocketsrcmain
目录 0 2016-02-16 15:38 JavaWebSocketsrcmainjava
目录 0 2016-02-16 15:38 JavaWebSocketsrcmainjavame
目录 0 2016-02-16 15:38 JavaWebSocketsrcmainjavamegacl
目录 0 2018-10-31 10:26 JavaWebSocketsrcmainjavamegaclwebsocket
文件 2991 2018-10-31 10:26 JavaWebSocketsrcmainjavamegaclwebsocketWebSocketTest.java
目录 0 2016-02-16 16:49 JavaWebSocketsrcmain
esources
目录 0 2018-10-31 14:00 JavaWebSocketsrcmainwebapp
文件 1933 2018-10-31 14:00 JavaWebSocketsrcmainwebappindex.jsp
目录 0 2016-02-16 15:08 JavaWebSocketsrcmainwebappWEB-INF
............此处省略39个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)