搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
IT小白
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
【开题报告】ssm电影推荐系统99182计算机毕业设计程序_电影推荐系统开题报告
2
基于用户的相似性度量
3
VBA自学笔记_type:=xlfilldefault
4
【跟着江科大学Stm32】STM32F103C6T6_PWM控制直流电机_代码_stm32f103c6t6伺服源码
5
网络工程师必备技术汇总_网络工程师掌握的技术
6
【深度学习】LSTM实现情感分析 (Pytorch)
7
Codeforces Round #742 Div.2 (A~E)题解_codeforces round #742 (div. 2) e
8
大数据开发:Hadoop的开源架构实现_hadoop 主流开源云框架实验
9
PDF 图片转文字_pdf图片转成文字版
10
[数据结构]链表之单链表(详解)
当前位置:
article
> 正文
web socket
作者:IT小白 | 2024-05-27 23:25:48
赞
踩
有新连接加入:{},当前在线人数为
package com.web;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
/**
* @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,
* 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端
*/
@ServerEndpoint("/websocket")
public class WebSocketTest {
//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static CopyOnWriteArraySet<WebSocketTest> webSocketSet = new CopyOnWriteArraySet<WebSocketTest>();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
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--;
}
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/IT小白/article/detail/634565
推荐阅读
article
Java
字节
流转换为
字符
流
_
java
socket
读的
字节
怎么
转成
字符
...
BufferedWriter bufferedWriter = new BufferedWriter(new Outpu...
赞
踩
article
java
socket
接收
二进制
数据
_
WebSocket
系列之
二进制
数据
设计与传输...
概述通过前三篇博客,我们能够了解在通过
WebSocket
发送
数据
之前,我们需要传递的
数据
是如何变成ArrayBuffer...
赞
踩
article
【
嵌入式软件
工程师面经】
Socket
,
TCP
,
HTTP
之间
的区别...
两个计算机进行网络通信,用
TCP
/IP协议就够了,就能发数据,双方也能收到各自发来的数据,可是,仅仅收到了数据,无法解析...
赞
踩
article
服务器
编程1-
socket
...
所有代码环境没有说明都是VMware中运行的Ubuntu18里。:写这么多东西,我觉得是对知识的梳理吧,一个是防忘,再者...
赞
踩
article
socket
1
. 基础...
参数sockfd参数sockfd就是上面解释中的监听套接字,这个套接字用来监听一个端口,当有一个客户与服务器连接时,它使...
赞
踩
article
网络
编程-
Socket
...
网络
编程-
Socket
网络
编程-
Socket
网络
编程相关文章 ...
赞
踩
article
网络编程
-----
socket
函数
_
socket
.
socket
...
1.Socket()
函数
:访问底层操作系统接口的全部方法,提供服务中心类,简化网络服务器的开发;语法:
socket
.so...
赞
踩
article
SOCKET
【
1
】-对
IO
多路复用
的
理解
_
socket
多路复用
...
文章目录前言一、什么是
socket
?二、阻塞三、什么是
IO
多路复用
技术四、为什么使用
多路复用
三、selet 与epoll...
赞
踩
article
Socket
学习笔记(
1
)
Socket
基本原理
以及实例_
csock
,
addr
...
目录
1
. socket 原理
1
.
1
什么是
Socket
1
.2 网络中如何通信
1
.3 socket通信原理图2. sock...
赞
踩
article
socket
1
---
UDP
编程_
udp
socket
编程...
端口号是一共2字节16位整数,范围是[0,65535];端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个...
赞
踩
article
socket
(
1
)
定义
_
socket
接口
定义
...
通俗易懂说
socket
(
1
)
1
. 什么是
socket
?
1
.
1
定义
1
.2 功能
1
.3 位置2. 为什么需要
socket
...
赞
踩
article
Linux
高性能
服务器
编程
(6)
socket
基础_
linux
socket
csdn
...
Linux
网络
编程
基础API
socket
地址API。
socket
最开始的含义是一个IP地址和端口对(ip,port)。它...
赞
踩
article
Linux网络编程:
socket
、
客户端
服务器端
使用
socket
通信(
TCP
)_
linux
下的soc...
Linux网络编程:
socket
、
客户端
服务器端
使用
socket
通信(
TCP
)_
linux
下的
socket
编程
实验报告
l...
赞
踩
article
Socket
通信
机制详解_
socket
的
基本概念
和
原理
...
Socket
通信
机制详解_
socket
的
基本概念
和
原理
socket
的
基本概念
和
原理
Socke...
赞
踩
article
启动py
spark
,报错
socket
.gaierr
or
: [Errno -2] Name
or
se...
启动py
spark
报错,如下:[root@hadoop-seni
or
spark
-1.6.0-cdh5.13.0]# p...
赞
踩
article
【
UNIX
网络编程】| 【02】基本
TCP
套接字编程(
socket
、connnect、
bind
、li...
2.1 案例注意3、
bind
函数3.2 运行捆绑通配地址的当个
服务器
4、listen函数4.1 listen包裹函数,设...
赞
踩
article
基于
STM32
-
Socket
-Qt 遥控
小车
(一代)_
stm32
socket
...
本项目本质为客户端与服务器之间的通信,通过发送不同的指令,服务器和客户端进行不同的操作。客户端:
基于
STM32
制作简单行...
赞
踩
相关标签
java socket 接收二进制数据
tcp/ip
http
网络
操作系统
运维
开发语言
udp
socket
python
unix
服务器
驱动开发
linux
linux网络编程
套接字
TCP