1. 程式人生 > >Springboot2整合netty4.0

Springboot2整合netty4.0

Springboot2整合netty4.0

在這裡插入圖片描述

前端:

window.CHAT = {
				socket: null,
				init: function() {
					if (window.WebSocket) {
						CHAT.socket = new WebSocket("ws://192.168.1.10:8088/ws");
						CHAT.socket.onopen = function() {
							console.log("連線建立成功...");
						},
						CHAT.socket.onclose = function() {
							console.log("連線關閉...");
						},
						CHAT.socket.onerror = function() {
							console.log("發生錯誤...");
						},
						CHAT.socket.onmessage = function(e) {
							console.log("接受到訊息:" + e.data);
							var receiveMsg = document.getElementById("receiveMsg");
							var html = receiveMsg.innerHTML;
							receiveMsg.innerHTML = html + "<br/>" + e.data;
						}
					} else {
						alert("瀏覽器不支援websocket協議...");
					}
				},
				chat: function() {
					var msg = document.getElementById("msgContent");
					CHAT.socket.send(msg.value);
				}
			};
			
			CHAT.init();

後端:整合netty server
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();

	// websocket 基於http協議,所以要有http編解碼器
	pipeline.addLast(new HttpServerCodec());
	// 對寫大資料流的支援 
	pipeline.addLast(new ChunkedWriteHandler());
	// 對httpMessage進行聚合,聚合成FullHttpRequest或FullHttpResponse
	// 幾乎在netty中的程式設計,都會使用到此hanler
	pipeline.addLast(new HttpObjectAggregator(1024*64));
	
	// ====================== 以上是用於支援http協議    ======================
	
	
	
	// ====================== 增加心跳支援 start    ======================
	// 針對客戶端,如果在1分鐘時沒有向服務端傳送讀寫心跳(ALL),則主動斷開
	// 如果是讀空閒或者寫空閒,不處理
	pipeline.addLast(new IdleStateHandler(8, 10, 12));
	// 自定義的空閒狀態檢測
	pipeline.addLast(new HeartBeatHandler());
	// ====================== 增加心跳支援 end    ======================
	
	
	
	
	// ====================== 以下是支援httpWebsocket ======================
	
	/**
	 * websocket 伺服器處理的協議,用於指定給客戶端連線訪問的路由 : /ws
	 * 本handler會幫你處理一些繁重的複雜的事
	 * 會幫你處理握手動作: handshaking(close, ping, pong) ping + pong = 心跳
	 * 對於websocket來講,都是以frames進行傳輸的,不同的資料型別對應的frames也不同
	 */
	pipeline.addLast(new WebSocketServerProtocolHandler("/ws"));
	
	// 自定義的handler
	pipeline.addLast(new ChatHandler());
}

原始碼下載:http://47.98.237.162/detail/1/181

下載原始碼後,記住分享喲!

第一步:微信關注公眾號豔學網!

第二步:關注後開啟選單“豔輝福利”——“java福利”,轉發文章至朋友圈。

長按自動識別二維碼,即可關注微信公眾號“豔學網”
在這裡插入圖片描述