`
沧海一小粟
  • 浏览: 25221 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java WebSocket服务端和客户端实现

阅读更多
   最近接到老大指示,研究下WebSocket是个神马东东,接到指示后疯狂百度,四天下来把网上的demo试了N次,但没一次成功,还买了一本入门的书,按书上的第一个demo,最后的结果是,tomcat运行正常,但是ws访问一直失败。当然最后找到了原因,我不得不说,网上那些demo其实没错(大部分),只是有些关键点没说明白,不然我也不会瞎折腾四天。

   介绍WebSocket的内容我就不说了,网上一大堆,这篇文章主要讲解下,java实现简单的webSocket通信,希望对同样和我一样刚开始学习WebSocket的朋友有点帮助!!!

一、环境:tomcat8.5.12 + jdk1.8.0_121,另外需要依赖一个jar包:Java-WebSocket-1.3.0.jar,eclipse最好用3.6以上,我的是Version: Luna Release (4.4.0),听说3.6及以上版本才支持WebSocket。

二、准备好以上的环境后,开始新建一个Web项目:

1.java编写WebSocket服务端,其实这个类相当简单,只是简单的在接收到客户端消息后告诉客户端接收到的消息,代码如下:
import javax.websocket.OnMessage;
import javax.websocket.server.ServerEndpoint;


@ServerEndpoint("/websocket/demo")//这里是一个类注解,告诉虚拟机该类被注解为一个WebSocket端点
public class MyServer {

	@OnMessage		//这里是方法注解,在接收到客户端的消息时触发
	public String echo(String clientMessage){
		return "收到来自客户端的消息:" + clientMessage;
	}
}

到此服务器端就完成了。
2.编写客户端,这里用一个html来实现:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>WebSocket Client</title>

<script type="text/javascript" language="javascript">
	var websocket;
	
	function init()
	{
		output = document.getElementById("output");
	}
	
	function send()
	{
		var wsUri = "ws://localhost:8080/WebSocketDemo1/websocket/demo";
		writeToScreen("Connecting to : "+ wsUri);
		websocket = new WebSocket(wsUri);
		websocket.onopen = function(evt)
		{
			writeToScreen("Connect Success!");
			doSend(document.getElementById("textID").value);
		};
		websocket.onmessage = function(evt)
		{
			writeToScreen("Received Message: "+ evt.data);
			websocket.close();
		};
		websocket.onerror = function (evt)
		{
			writeToScreen('<span style="color:red;">ERROR:</span>'+evt.data);
		};
	}
	function doSend(message)
	{
		websocket.send(message);
		writeToScreen("Send Message : "+message);
	}
	
	function writeToScreen(message)
	{
		var pre = document.createElement("p");
		pre.style.wordWrap = "break-word";
		pre.innerHTML = message;
		output.appendChild(pre)
	}
	
	window.addEventListener("load", init, false);
	
</script>
</head>
<body>
	<h1>WebSocket Client</h1>
	
	<div style="text-align:left;">
	<form action="">
		<input onclick="send()" value="Send Message" type="button">
		<input id="textID" name="message" value="Hello Web Socket" type="text">
		<br>
	</form>
	
	</div>
	<div id="output"></div>
</body>
</html>

到这里,客户端就完成了。

三、这步也是我在网上看的demo没有描述详细的地方:发布WebSocket服务端程序,将项目直接copy到tomcat的webapps目录下如图:



启动服务,然后访问项目的首页(IE10或以上,谷歌浏览器,具体可搜下哪些浏览器支持):







ps:1.在服务器端程序中,注解类的参数:/websocket/demo,这个与在jsp页面中ws地址后的一致,如果服务器端这样写:/demo,则jsp中的uri为:ws://localhost:8080/WebSocketDemo1/demo
2.在tomcat中发布程序时,一定要注意,webapps下项目点进去后一定要能找到WEB-INF这个文件夹,我开始时就是因为eclipse建好项目后直接放到该目录下,但是在建项目时,classes文件保存目录没设置好,一直没成功。

  • 大小: 36.5 KB
  • 大小: 68.8 KB
  • 大小: 45.3 KB
  • 大小: 60.1 KB
分享到:
评论

相关推荐

    Java Web Project开发WebSocket服务端/客户端

    在标题提到的"Java Web Project开发WebSocket服务端/客户端"项目中,开发者选择了Jetty作为服务器平台。Jetty 7.0版本的WebSocket API与后续版本(如9.0及以上)有较大差异。在Jetty 9.0之后,WebSocket API进行了...

    java实现websocket客户端与服务端的连接

    在Java中实现WebSocket客户端和服务端的连接,主要涉及到以下几个关键知识点: 1. **WebSocket协议**: WebSocket协议是基于TCP的,旨在提供更低的延迟和更高的效率,适合需要频繁交互的应用场景,如在线游戏、聊天...

    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码.rar

    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码;Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码;Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码

    websocket服务端 客户端源码

    本资源包含的是Java实现的WebSocket服务端和客户端的源码,这对于学习和理解WebSocket的工作原理以及如何在Java环境中应用WebSocket非常有帮助。下面将详细解释这些知识点: 1. **WebSocket协议基础**:WebSocket...

    Netty实现Java服务端和C#客户端联通

    标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...

    WebSocket区分不同客户端两种方法(HttpSession和@PathParam)

    本文将详细探讨两种主要的方法——利用`HttpSession`和`@PathParam`来区分不同的WebSocket客户端。 #### 二、使用`HttpSession`识别不同客户端 ##### 1. 理论基础 `HttpSession`是Java Servlet API中提供的一种...

    websocket demo(java客户端,心跳监测)

    java写的websocket客户端,包含心跳监测。 此架包可解决问题:系统使用websocket 访问远程上的实时数据,但是有时候会停止更新实时数据,只要重启了自己的系统,就会继续更新数据了,此包可以完美解决此问题。

    java写的一个简单的websocket服务端

    这个"java写的一个简单的websocket服务端"示例是一个很好的起点,用于理解如何使用Java来实现WebSocket服务端。 在Java中,WebSocket的实现主要依赖于`javax.websocket` API,这个API是Java标准EE 7及更高版本的一...

    基于springboot实现websocket客户端和服务端

    环境配置 开发环境配置为: JDK 8 IntelliJ IDEA 2020.1.2 x64 Springboot集成的Websocket ...在Spring内,WebSocket实例以WebSocketSession形式存在,每个session都代表了一个服务端与客户端的会话。

    websocket客户端和服务端

    `WebSocketClient.java`和`WebSocketServer.java`是实现WebSocket协议的关键文件,分别代表了客户端和服务器的实现。 **WebSocket客户端**: 1. **初始化连接**:客户端首先通过HTTP Upgrade请求与服务器建立...

    毕设&课设&项目&实训-基本的websocket服务端 ,客户端是基于微信小程序开发的,目前可单聊和群聊.zip

    基本的websocket服务端 ,客户端是基于微信小程序开发的,目前可通过服务端来获取微信用户基本信息并保存到数据库, 聊天内容也可保存到数据库 ,目前可单聊和群聊 【项目资源】: 包含前端、后端、移动开发、操作系统、...

    WebSocket服务端程序v160_websocekt即时通讯_

    描述中的"socket通信即时服务端源码 客服端服务端"进一步说明了这个压缩包的内容,它包含的是WebSocket服务端的源代码,可能还包括客服端(client-side)的实现。Socket是网络编程中的基础概念,是进程间通信的一种...

    webSocket实现Android客户端之间简单的通讯

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在任意方向上流动,而无需反复建立和关闭连接。WebSocket协议被广泛应用于实时通信场景,例如在线游戏、聊天应用、...

    安卓websocket(客服端和服务端写在app端) 案例

    - 在安卓应用中实现WebSocket服务端相对复杂,因为Android系统并非设计为服务器角色。可以使用线程或者IntentService来处理服务器逻辑。 - 服务端同样需要监听特定端口,接收并响应连接请求。使用`ServerSocket`类...

    Netty WebSocket服务端

    在"Netty WebSocket服务端"的实现中,我们首先需要了解Netty的ChannelHandlerContext,它是Netty的核心组件,包含了处理I/O事件和发送数据的所有方法。当我们监听到WebSocket连接建立时,会创建一个WebSocket的通道...

    WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket协议的核心在于创建一个持久的连接,允许数据在客户端和服务器之间双向流动。与HTTP不同,WebSocket连接一旦建立,就可以保持开放,直到客户端或服务器一方关闭连接。这种特性对于实时应用,如在线聊天、...

    Java WebSocket 多人聊天室Deomo

    而WebSocket则允许建立持久的连接,使得数据能够在客户端和服务器之间双向流动,极大地优化了实时应用,如聊天室、在线游戏、股票交易等场景。 Java WebSocket API是Java EE 7标准的一部分,它提供了一种在Java...

    Socket_WebSocket客户端程序v120.zip_packsu1_websocket_websocket 客户端_we

    1. **源代码**:实现WebSocket客户端和服务端的编程语言源代码,可能是用Java、Python、Node.js等编写,这些代码将处理建立连接、发送和接收数据的逻辑。 2. **API文档**:可能包含有关如何使用这个客户端和服务端...

    WebSocket客户端与服务端

    在"StriveEngine.SimpleDemo"这个示例中,可能包含了一个简单的WebSocket客户端和服务端的实现。客户端通常会使用JavaScript的WebSocket API来创建连接,发送和接收数据。服务器端则可以使用各种编程语言(如Node.js...

    websocket从服务端获取图片

    在本例中,我们将探讨如何使用WebSocket从服务端获取图片并在HTML5浏览器上显示,服务端采用Java注解方式实现,并在Tomcat8应用服务器上进行调试。 1. WebSocket基础: WebSocket协议是HTTP/1.1的扩展,通过握手...

Global site tag (gtag.js) - Google Analytics