Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java8 + Tomcat8 实现Websocket 例子

Java8 + Tomcat8 实现Websocket 例子

作者头像
netkiller old
发布于 2018-03-05 08:25:28
发布于 2018-03-05 08:25:28
1.1K00
代码可运行
举报
文章被收录于专栏:NetkillerNetkiller
运行总次数:0
代码可运行

背景

公司网站上线需要一个实时报价功能,于是想到了 Websocket, 我在多年前就尝试过Websocket 那时 HTML5标准尚未产生,各家实现均有不同,Websocket 版本也非常多,实现兼容也比较复杂,于是放弃Websocket。最近看到Websocket 开始流行起来,兼容也不再是障碍。

以下节选自《Netkiller Java 手札》,下面例子实现一个简单的 Echo Server

目录

  • 7.1. Server
  • 7.2. Client

环境:Java8 + Tomcat8

7.1. Server

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package websocket;

/**
 * Websocket Server
 * 
 * @author netkiller<netkiller@msn.com>
 */

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint(value = "/echo")
public class PriceServer {

	private Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());

	/**
	 * Callback hook for Connection open events. This method will be invoked
	 * when a client requests for a WebSocket connection.
	 * 
	 * @param session
	 *            the session which is opened.
	 */
	@OnOpen
	public void onOpen(Session session) {
		sessions.add(session);
	}

	/**
	 * Callback hook for Connection close events. This method will be invoked
	 * when a client closes a WebSocket connection.
	 * 
	 * @param session
	 *            the session which is opened.
	 */
	@OnClose
	public void onClose(Session session) {
		sessions.remove(session);
	}

	/**
	 * Callback hook for Message Events. This method will be invoked when a
	 * client send a message.
	 * 
	 * @param message
	 *            The text message
	 * @param session
	 *            The session of the client
	 */
	@OnMessage
	public void onMessage(String message, Session session) {
		System.out.println("Message Received: " + message);
		for (Session remote : sessions) {
			System.out.println("Sending to " + remote.getId());
			remote.getAsyncRemote().sendText(message);
		}
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netkiller 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tomcat7和tomcat8的websocket区别
tomcat8真正支持jsr-356(包含对websocket的支持), tomcat7部分版本的websocket实现不兼容jsr-356。websocket实现tomcat7.x与tomcat8.x有很大差异。在tomcat7中使用websocket需要定义一个servlet,然后继承WebSocketServlet,在tomcat8中使用websocke。出自:http://blog.csdn.net/liuxiao723846/article/details/46930173
全栈程序员站长
2022/09/09
5310
java之WebSocket之ServerEndPoint
The javax.websocket.server package contains annotations, classes,and interfaces to create and configure server endpoints.
IT工作者
2022/05/17
2.5K0
Java后端WebSocket的Tomcat实现
文章摘要随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。 我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如浏览器)主动发起,服务端进行处理后返回response结果,而服务端很难主动向客户端发送数据;这种客户端是主动方,服务端是被动方的传统Web模式对于信息变化不频繁的Web应用来说造成
庞小明
2018/03/07
2.8K1
WebSocket 双向通信
在浏览器中,JavaScript提供了WebSocket API,它使开发人员能够创建WebSocket连接、发送和接收消息。基本的WebSocket客户端API包括以下几个主要接口和方法:
.29.
2024/01/21
4450
WebSocket 双向通信
万字详解,带你彻底掌握 WebSocket 用法(至尊典藏版)
WebSocket是一种协议,用于在Web应用程序和服务器之间建立实时、双向的通信连接。
程序员蜗牛
2024/03/29
6.6K0
万字详解,带你彻底掌握 WebSocket 用法(至尊典藏版)
WebSocket JAVA
源码:https://github.com/jxq0816/WebSocket websocket 要求jdk 1.8 一、pom.xml <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> 二、WebSocketTest
week
2018/08/24
1.1K0
SpringBoot2整合WebSocket,实现后台向前端推送信息
WebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
Li_XiaoJin
2022/06/12
2.9K0
SpringBoot2整合WebSocket,实现后台向前端推送信息
WebSocket实现在线聊天
“ 这一篇文章前面部分我们会先介绍WebSocket协议的基本知识,在最后我们会用Spring Boot来集成WebSocket实现一个简单的在线聊天功能,我们也可以跨过前面的介绍直接看集成部分,后续在慢慢研究WebSocket。”
每天学Java
2020/06/02
4.3K5
Java 与 JavaScript 对websocket的使用
ebsocket,HTML5中新一代全双工通信协议。其底层仍然是http协议。 传统 HTTP 请求响应客户端服务器交互图 WebSocket 请求响应客户端服务器交互图 WebSocket 客户端支
庞小明
2018/03/07
2K0
Java 与 JavaScript 对websocket的使用
传统@ServerEndpoint方式开发WebSocket应用和SpringBoot构建WebSocket应用程序
通过websocket的两种使用方式,让你更加深入理解用法。很多人不懂websocket怎么辨别是谁发送过来的,文中说到实现WebSocketConfigurer接口,定义拦截器可以绑定用户信息,还有其他很多,细细品,对比看比较好!
java思维导图
2020/05/20
9.6K0
java.lang.IllegalStateException: Message will not be sent because the WebSocket
在Java的世界里,WebSocket是一种神奇的存在,它能让服务器与客户端之间建立起一条全双工通信的桥梁。然而,这条桥梁并非总是畅通无阻,有时候,开发者们会遇到一个令人头疼的问题:java.lang.IllegalStateException: Message will not be sent because the WebSocket session has been closed。这篇文章,我们将深入探讨这个问题的根源,并提供一些避免这种灾难发生的策略。准备好了吗?让我们一起揭开这个谜团!
疯狂的KK
2024/11/07
3320
java.lang.IllegalStateException: Message will not be sent because the WebSocket
Java WebSocket-1.基础实现
1. 新建Java Web项目 项目目录 2.添加pom依赖 WebScoket包 <!-- https://mvnrepository.com/artifact/javax.websocket/ja
悠扬前奏
2019/05/31
1.3K0
java的服务端websocket怎么写
在Java中实现WebSocket服务端,通常可以使用Java API for WebSocket(JSR 356)提供的标准库。以下是一个简单的Java WebSocket服务端的示例代码,使用了Java的javax.websocket库:
很酷的站长
2024/01/01
1K0
java的服务端websocket怎么写
SpringBoot之WebSocket和SSE
前言: 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“通知”,这要比浏览器按时向服务器查询(polling)更有效率。
王念博客
2019/07/24
1.4K0
websocket(二) websocket的简单实现,识别用户属性的群聊
没什么好说的,websocket实现非常简单,我们直接看代码。 运行环境:jdk8 tomcat8 无须其他jar包。 具体环境支持自己百度 package com.reach.socketController; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.CopyOnWriteArraySet; import javax.ann
生活创客
2018/01/30
2.2K0
WebSocket
HTTP:HTTP是应用层协议(在传输层使用 TCP,在网络层使用 IP 协议),是一种无状态(即每个请求都是一个新的请求)、无连接(每次连接只处理一个请求)协议,但是HTTP仍然可以借助Cookie(客户端数据储存)和Session(服务端数据储存)实现长连接(HTTP的长连接需要在请求头中加入Connection:keep-alive )。整个通信过程,客户端(浏览器)向服务端发送请求,服务端接收请求并返回响应信息。
十玖八柒
2022/08/01
1.6K0
WebSocket
WebSocket的初次使用及调试
4.0.0 WeeeebSkt WeeeebSkt 0.0.1-SNAPSHOT war
ZONGLYN
2019/08/08
2K0
从零玩转Websocket实时通讯服务之前后端分离版本
前言 公司项目需要用到消息提示,那么WebSocket它来了经过我面向百度的学习,废话不多说直接开干. 后端搭建 一、依赖导入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 二、搭建websocket服务 1.WebSocke
杨不易呀
2022/01/19
1.2K0
一起来学SpringBoot | 第二十五篇:打造属于你的聊天室(WebSocket)
WebSocket 是 HTML5 新增的一种在单个 TCP 连接上进行全双工通讯的协议,与 HTTP 协议没有太大关系....
battcn
2018/08/03
1.4K1
一起来学SpringBoot | 第二十五篇:打造属于你的聊天室(WebSocket)
springboot+websocket实现服务端、客户端
小编最近一直在使用springboot框架开发项目,毕竟现在很多公司都在采用此框架,之后小编也会陆续写关于springboot开发常用功能的文章。
全栈程序员站长
2022/09/15
3.9K0
springboot+websocket实现服务端、客户端
相关推荐
tomcat7和tomcat8的websocket区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验