websocket简单实现


websocket简单实现,能够对websocket进行一些实现,对初学websocket的人有一定好处。
资源截图
代码片段和文件信息
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.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个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)