websocket+ javaweb 实现浏览器聊天

26 篇文章 0 订阅
20 篇文章 0 订阅


1、先来看下效果,文章结尾有源码下载


2、上线提醒



3、代码放在笔记本上的tomcat,两个浏览器实现即时聊天





4、同一局域网下的台式电脑进行即时聊天,记得关闭防火墙。




有的浏览器不支持websocket,比如



5、由下图可知传统的tcp/ip协议需要经过3次握手连接,而websocket只需要连接一次。WebSocket 是类似 Socket 的 TCP 长连接的通讯模式,一旦 WebSocket 连接建立后,后续数据都以帧序列的形式传输。在客户端断开 WebSocket 连接或 Server 端断掉连接前,不需要客户端和服务端重新发起连接请求。在海量并发及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实时性优势明显。

 传统 HTTP 请求响应客户端服务器交互图

WebSocket 请求响应客户端服务器交互图



6、

//第一行代码是在申请一个WebSocket对象,参数是需要连接的服务器端的地址,同http协议使用http://开头一样,
WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。

onopen、onclose和onmessage方法把事件连接到Socket实例上。每个方法都提供了一个事件,以表示Socket的状态。

 var socket = new WebSocket("ws://192.168.1.116:8889");
	    socket.onmessage = function(event) {
	    	
	        alert("Received data from websocket: " + event.data);
	    }
	    socket.onopen = function(event) {
	        alert("Web Socket opened!");
	    };
	    socket.onclose = function(event) {
	        alert("Web Socket closed.");
	    };
	    
	  //消息接收
	    socket.onmessage = function(message) {
			var message = JSON.parse(message.data);
			if (message.type == 'count') {
				userCount = message.msg;
			}else if(message.type == 'goOut'){
				$("body").html("");
				goOut("此用户在其它终端已经早于您登录,您暂时无法登录");
			}else if(message.type == 'thegoout'){
				$("body").html("");
				goOut("您被系统管理员强制下线");
			}else if(message.type == 'changeMenu'){
				window.location.href=locat+'/main/yes';
			}else if(message.type == 'userlist'){
				userlist = message.list;
			}
		};


7、源码地址http://download.csdn.net/detail/u014520797/9789272


8、注意,代码被使用时需要修改ip地址参数




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值