使用webSocket需要注意什么

发布时间:2021-09-13 18:19:14 作者:小新
来源:亿速云 阅读:261

这篇文章将为大家详细讲解有关使用webSocket需要注意什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1. 什么是webSocket

一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

使用webSocket需要注意什么

2. webSocket的注解及使用

@ServerEndpoint(value = "/webSocketProxy/{nickName}")

表示一个URI映射的路径,标准的restfulAPI,{nickName}为路径参数。用于注解于类上。

@OnOpen     @OnMessage     @OnClose      @OnError

以上四个注解用于方法上,分别对应不同的事件:打开连接、收到消息、连接关闭、发生错误。当发生对应事件时,该方法将会被触发。通常开发中主要在@OnMessage方法内进行业务开发。

@PathParam("nickName")

此注解用于获取路径参数{nickName}。

NOT_YET_CONNECTED, CONNECTING, OPEN, CLOSING, CLOSED;
@ServerEndpoint(value = "/customWebSocket/{nickName}")
@Component
@Slf4j
public class CustomWebSocket {

	// 用来存放每个客户端对应的MyWebSocket对象 全局对象
	private static CopyOnWriteArraySet<CustomWebSocket> user = new CopyOnWriteArraySet<CustomWebSocket>();
	// 与某个客户端的连接会话,需要通过它来给客户端发送数据
	private Session session;

	@OnMessage
	public void onMessage(String message, Session session, @PathParam("nickName") String nickName) throws IOException {
		// 群发消息
		for (CustomWebSocket myWebSocket : user) {
			log.info("请求url:" + session.getRequestURI());
			myWebSocket.session.getBasicRemote().sendText(nickName + " :" + message);
			log.info("custom 收到消息:" + nickName + " :" + message);
		}
	}

	@OnOpen
	public void onOpen(Session session) {
		log.info("custom " + session.getId() + " open...");
		this.session = session;
		user.add(this);
	}

	@OnClose
	public void onClose() {
		System.out.println("custom " + this.session.getId() + " close...");
		session=null;
		user.remove(this);
	}

	@OnError
	public void onError(Session session, Throwable error) {
		session=null;
		log.warn("custom " + this.session.getId() + " error...",error);
	}

3. WebSocket的注意事项

synchronized (session){
    session.getBasicRemote().sendText(JSON.toJSONString(message));
}

关于“使用webSocket需要注意什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. 使用dubbo时你需要注意的
  2. Python中使用缩进需要注意什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

websocket

上一篇:如何使用CodeBenchmark对逻辑代码进行并发测试

下一篇:如何使用php foreach修改值

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》