Java遊戲伺服器開發之十--訊息處理器INetworkConsumer
Java遊戲伺服器開發之十-訊息處理器INetworkConsumer
有了session我們就可以在任何地方向客戶端傳送資訊
寫好了session,可以寫一個對訊息的處理類(消費者)。
add
INetworkConsumer
NetworkConsumer
update
TcpMessageStringHandler
多加一個INetworkConsumer介面,裡面就一個方法consume
寫一個實現類NetworkConsumer,實現consume方法,然後將handle中的channelRead0中的內容拷貝過來。簡單實現下,在加個@Component註解。
在TcpMessageStringHandler中
注入
@Autowired
private INetworkConsumer consumer;
把channelRead0的內容改成consumer.consume(msg, ctx.channel());
看看具體的程式碼吧:“
INetworkConsumer
/* * Copyright (C), 2015-2018 * FileName: INetworkConsumer * Author: zhao * Date: 2018/6/23 21:06 * Description: 網路訊息處理器 * History: * <author> <time> <version> <desc> * 作者姓名 修改時間 版本號 描述 */ package com.lizhaoblog.base.network.customer; import io.netty.channel.Channel; /** * 〈一句話功能簡述〉<br> * 〈網路訊息處理器〉 * * @author zhao * @date 2018/6/23 21:06 * @since 1.0.0 */ public interface INetworkConsumer { /** * 執行具體的指令 * * @param message message 客戶端傳送的訊息 * @param channel channel 與客戶端連線的管道 */ void consume(String message, Channel channel); }
NetworkConsumer
/* * Copyright (C), 2015-2018 * FileName: INetworkConsumer * Author: zhao * Date: 2018/6/23 21:06 * Description: 網路訊息處理器 * History: * <author> <time> <version> <desc> * 作者姓名 修改時間 版本號 描述 */ package com.lizhaoblog.server.core.customer; import com.lizhaoblog.base.network.customer.INetworkConsumer; import com.lizhaoblog.base.session.SessionManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import io.netty.channel.Channel; /** * 〈一句話功能簡述〉<br> * 〈網路訊息處理器,實現類〉 * * @author zhao * @date 2018/6/23 21:09 * @since 1.0.0 */ @Component public class NetworkConsumer implements INetworkConsumer { private static final Logger logger = LoggerFactory.getLogger(NetworkConsumer.class); @Override public void consume(String message, Channel channel) { logger.info("伺服器收到的資料內容:data=" + message); String result = "小李,我是伺服器,我收到你的資訊了。"; SessionManager.getInstance().sendMessage(channel, result); } }
後面就可以在NetworkConsumer實現路由的功能,將訊息轉到各自的處理中了
上面的程式碼在碼雲上 https://gitee.com/lizhaoandroid/JgServer
可以加qq群一起探討Java遊戲伺服器開發的相關知識 676231564
相關推薦
Java遊戲伺服器開發之十--訊息處理器INetworkConsumer
Java遊戲伺服器開發之十-訊息處理器INetworkConsumer 有了session我們就可以在任何地方向客戶端傳送資訊 寫好了session,可以寫一個對訊息的處理類(消費者)。 add INetworkConsumer NetworkConsumer update
Java遊戲伺服器開發之十一-- 將訊息分發給執行緒佇列執行及路由功能
新增的類有: com.lizhaoblog.base.concurrent.commond.ICommand com.lizhaoblog.base.concurrent.commond.IHandler com.lizhaoblog.base.concurrent.dict
Java遊戲伺服器開發之十五--使用StringMessage封裝訊息
之前我們的訊息都是直接通過使用String,然後通過netty的預設編解碼器StringDecoder、StringEncoder來進行傳輸,而我們需要的不僅僅是文字內容,還需要擴充套件一些其他的東西(訊息號、狀態碼之類的)。 訊息傳輸可以看看這篇遊戲中tcp訊息使用b
Java遊戲伺服器開發之十二--資料庫連線整合mybatis
應該比較讓人關心的還有一個就是資料儲存的問題了。 下面將會介紹連線資料庫的相關內容 使用的是mysql資料庫,框架中將使用mybatis 這裡介紹時假設各位都使用或者瞭解過mysql。 1.在pom中新增相關包 2.建立資料庫和表 3.建立
Java遊戲伺服器開發之二--導航帖
Java遊戲伺服器開發之三--日誌 https://blog.csdn.net/cmqwan/article/details/80644339 Java遊戲伺服器開發之四--通訊框架netty https://blog.cs
java遊戲伺服器開發之四--通訊框架netty
前言, 說明 引入netty的pom <!-- netty --> <dependency> <groupId>io.netty</groupId> <artifactId>nett
Java遊戲伺服器開發之二十三--將xml-cfg和redis的配置內容加到properties中
Java遊戲伺服器開發之二十三–將xml-cfg和redis的配置內容加到properties中 之前將xml-cfg和redis的工具類都寫好了,但是裡面的引數都是寫在程式裡面的,這一篇的話就是講這2個的配置檔案寫到properties中,不需要編譯程式就可
java遊戲伺服器開發之七--使用IServer控制服務的啟動與關閉
之前我們啟動伺服器都是直接這麼寫的 Channel acceptorChannel = ServerChannelFactory.createAcceptorChannel() acceptorChannel.closeFuture().sync() 這樣子也沒辦法關閉,
java遊戲伺服器開發之三--日誌
日誌在一個系統中的重要性還是很大的,有時候專案部署到伺服器上,不可能使用斷點除錯的方式,只能從日誌檔案中查詢蛛絲馬跡。 這邊是使用的slf4j。 在pom檔案中新增slf4j <!-- 日誌包 --> <depe
Java遊戲伺服器成長之路——2016隨筆總結
寫在開頭 Java遊戲伺服器成長之路的系列,已經很長時間沒寫了,不是不想寫,而是這一年,基本都是在忙別的了,今天特地擠出時間,對我的2016年,做一個不留遺憾的總結。 2016的事件 不知不覺,又到了春節搶票的時候了,這兩天除了盼著年終能發點獎金以外,
Java遊戲伺服器成長之路——感悟篇
又是一個美好的週末啊,現在一到週末,早上就起得晚,下午困了又會睡一兩個小時,上班的時候,早上起來喝一杯咖啡,然後就能高效的工作一整天,然而到了週末人就懶散了,哈哈。 最近剛跳槽,到新公司已經幹了有兩週時間了,這兩週時間是過得比較充實的,因為這家新公司
java遊戲伺服器開發從0開始-基礎搭建
eclipse安裝maven這裡就不在書寫,網上有很多教程,可以自己查詢,當然你可以下載一個自帶maven的eclipse 新建Maven專案,pom.xml如下 <project xmlns="http://maven.apache.org/POM/4.0.0"
Go遊戲伺服器開發的一些思考(十):goroutine和coroutine
概要 go語言的特色之一就是goroutine。也就是go協程。由於協程這個東西在go語言之前,用到相對比較少,大家對協程的理解程度不一,或有偏差。比如本人剛接觸goroutine時,就對其比較畏懼,因為不知道它到底是如何運作的。因此有必要深入瞭解下什麼是協程
Go遊戲伺服器開發的一些思考(十七):IO遊戲同步(三)
概要 在本系列的11章、14章中,討論了IO遊戲同步;並介紹了一種同步方式:每100ms傳送一次全量狀態包;介紹了作為抗網路波動的優化手段,使用UDP協議來發這個狀態包。 本章將深入討論,網路波動下的同步問題。 TC命令模擬網路環境 既然要討論壞的網
Go遊戲伺服器開發的一些思考(二十五):Redis的Docker Swarm部署
痛點 在redis 4出來之前,redis哨兵、redis叢集 是無法通過簡單的方式支援Docker Swarm的。原因是Docker Swarm的NAT埠對映機制,會導致redis無法正確獲取宿主IP、埠。 在redis 4之後,官方通過在redis.co
Go遊戲伺服器開發的一些思考(二十八):登入流程(一)
過程與不確定因素 帳號登入是一個跨多個服務程序的一段持續的互動過程。 如IO遊戲,會涉及到的遊戲伺服器有: 登入伺服器 資料庫伺服器 快取伺服器 中心伺服器(很多別名,如CenterServer、WorldServer;也可能是redis、etcd之類的
微信公眾平臺開發之模板訊息(Java)
由於柳峰老師的新書還沒有出來,網上也沒有過多介紹基於Java語言的開發微信公眾平臺模板訊息的例子,因此有了本文。由於個人表達能力和程式設計能力有限,請多多包涵。本文僅介紹擁有模板訊息許可權的微信公眾賬號開發。 本文分為以下兩部分: 1.開發模板訊息SDK 2.構造模板訊息併
【iOS-Cocos2d遊戲開發之十八】解決滾屏背景/拼接地圖有黑邊(縫隙)/動畫播放出現毛邊以及禁止遊戲中自動鎖屏問題!【2011年12月18日補充】
原創,轉載務必在明顯處註明:轉載自 原文連結: http://www.himigame.com/iphone-cocos2d/507.html 本章節主要為大家介紹在遊戲開發過程中經常遇到的兩個問題; 1. 解決滾屏背景或拼接地圖有黑邊! 對於遊戲開
Cocos2D-x遊戲開發之十九:瓦塊地圖之碰撞檢測
昨天我們有了精靈和背景,並且精靈可以跑動了,但是我們不能讓精靈無窮無盡地跑下去吧,於是今天我們要在地圖上新增一些障礙物了; 首先開啟精靈的TMX地圖,然後我們自定義一個32X32畫素的圖片新增到圖層中,然後設定此圖層的屬性為:“collidable” 值為“true”,下一
OneNET麒麟座應用開發之十:空氣質量數據監測站項目總結
device arr mpp mas 地址 實用 問題 volume 數據監測 大氣質量數據監測站用於測試空氣質量監測及數據采集,實現野外或者室內空氣質量的檢測。 1、項目概述 本項目是一個定制項目,要求采集大氣的壓力、溫度、濕度、PM25、位置等數據並上傳到指定的後臺服務