中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

IMI v0.0.7 用 Controller 開發(fā) WebSocket/TCP/UDP 應(yīng)用

2018-07-31    來(lái)源:oschina

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
IMI

現(xiàn)在IMI可以像開發(fā)http應(yīng)用一樣,使用控制器-動(dòng)作,WebSocket/TCP/UDP應(yīng)用。IMI內(nèi)置支持連接分組,僅僅需要十行代碼,就構(gòu)建出了一個(gè)簡(jiǎn)單的 WebSocket 聊天室,當(dāng)然這里代碼行數(shù)沒(méi)有算定義類、方法等等的代碼。

首先定義一個(gè) WebSocket 路由,只有指定uri才可以握手。@WSConfig定義了接收和發(fā)送數(shù)據(jù)的編碼解碼類。

/**
 * 測(cè)試
 * @Controller
 */
class Index extends HttpController
{
	/**
	 * 連接地址:ws://127.0.0.1:8083/
	 * 
	 * @Action
	 * @Route("/")
	 * @WSConfig(parserClass=\Imi\Server\WebSocket\Parser\JsonArrayParser::class)
	 * @return void
	 */
	public function index()
	{
		// 握手處理,什么都不做,框架會(huì)幫你做好
	}
	
}

真正的業(yè)務(wù)代碼如下,根據(jù)@WSRoute配置的路由,如傳過(guò)來(lái)是{"action":"login"}數(shù)據(jù)則進(jìn)入login方法處理。下面的代碼,還實(shí)現(xiàn)了連接分組及分組發(fā)送。

/**
 * 數(shù)據(jù)收發(fā)測(cè)試
 * @WSController
 */
class Test extends WebSocketController
{
	/**
	 * 登錄
	 * 
	 * @WSAction
	 * @WSRoute({"action"="login"})
	 * @return void
	 */
	public function login($data)
	{
		ConnectContext::set('username', $data->username);
		$this->server->joinGroup('g1', $this->frame->getFd());
		return ['success'=>true];
	}

	/**
	 * 發(fā)送消息
	 *
	 * @WSAction
	 * @WSRoute({"action"="send"})
	 * @param 
	 * @return void
	 */
	public function send($data)
	{
		$message = ConnectContext::get('username') . ':' . $data->message;
		$this->server->groupCall('g1', 'push', $message);
	}

}

由于這僅僅是一個(gè)演示 WebSocket 的 Demo,所以很多細(xì)節(jié)并沒(méi)有考慮完善,但是依然掩蓋不住 imi 的簡(jiǎn)單高效!

上面的代碼在imi-demo項(xiàng)目中有完整的可以跑,當(dāng)然你也可以直接進(jìn)我搭建在雙核+4G的老爺機(jī)上的演示。用了ngrok,服務(wù)器在美國(guó),經(jīng)不住攻擊,大家正常玩就行~發(fā)現(xiàn)問(wèn)題請(qǐng)及時(shí)告知我,非常感謝!

演示地址:http://chat-demo.imiphp.com:8084/

tcp聊天室demo及客戶端代碼,請(qǐng)查看imi-demo項(xiàng)目

v0.0.7 更新內(nèi)容

  • 新增支持中間件+控制器開發(fā)WebSocket/TCP/UDP應(yīng)用

  • 新增支持連接會(huì)話數(shù)據(jù)持久化

  • 新增獲取分組中連接總數(shù)方法

  • 新增Redis分組redisDb屬性指定數(shù)據(jù)庫(kù)

  • 新增監(jiān)聽(tīng)WorkerError事件

  • 開放一些BeanProxy方法

  • 模型生成支持視圖

  • imi 服務(wù)器類中新增getSwoolePort()方法

  • 優(yōu)化模型的字段、方法注釋,加上數(shù)據(jù)庫(kù)字段注釋,更加方便理解

  • 優(yōu)化數(shù)據(jù)庫(kù)模型update/delete/save處理,現(xiàn)在當(dāng)主鍵為null時(shí),update/delete可能會(huì)拋出異常

  • 優(yōu)化命名,將work改為worker

  • 優(yōu)化Redis事務(wù)延遲收包處理

  • 連接數(shù)據(jù)持久化、連接分組Redis驅(qū)動(dòng)心跳數(shù)據(jù)使用事務(wù)寫入,防止極端情況

  • 補(bǔ)充服務(wù)器close事件的$reactorID參數(shù)

  • 提取獲取進(jìn)程ID的方法到工具類

  • 修復(fù)模型生成的前綴處理問(wèn)題

  • 修復(fù)數(shù)據(jù)庫(kù)查詢對(duì)in和not in條件的處理錯(cuò)誤

  • 修復(fù)Bean類緩存清除問(wèn)題

介紹

IMI 是基于 Swoole 開發(fā)的協(xié)程 PHP 開發(fā)框架,擁有常駐內(nèi)存、協(xié)程異步非阻塞IO等優(yōu)點(diǎn)。

IMI 框架文檔豐富,上手容易,致力于讓開發(fā)者跟使用傳統(tǒng) MVC 框架一樣順手。

IMI 框架底層開發(fā)使用了強(qiáng)類型,易維護(hù),性能更強(qiáng)。支持 Aop ,支持使用注解和配置文件注入,完全遵守 PSR-3、4、7、11、15、16 標(biāo)準(zhǔn)規(guī)范。

框架的擴(kuò)展性強(qiáng),開發(fā)者可以根據(jù)實(shí)際需求,自行開發(fā)相關(guān)驅(qū)動(dòng)進(jìn)行擴(kuò)展。不止于框架本身提供的功能和組件!

我們認(rèn)為一個(gè)框架不僅需要代碼健壯、簡(jiǎn)單易用,文檔也是十分重要,所以文檔的完善是我們工作的重點(diǎn),相信一個(gè)好的文檔能夠讓你事半功倍!

歡迎有志之士加入我們,一起開發(fā)完善!技術(shù)好的貢獻(xiàn)代碼,文筆好的貢獻(xiàn)文檔,有好的想法也歡迎與我們交流!

官網(wǎng):https://www.imiphp.com/
文檔手冊(cè):https://doc.imiphp.com/

代碼倉(cāng)庫(kù):
碼云:https://gitee.com/yurunsoft/IMI
Github:https://github.com/Yurunsoft/IMI

空項(xiàng)目:https://gitee.com/yurunsoft/empty-imi-demo
功能Demo:https://gitee.com/yurunsoft/imi-demo

標(biāo)簽: 代碼 服務(wù)器 開發(fā)者 數(shù)據(jù)庫(kù)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:iView 發(fā)布 3.0 版本,以及開發(fā)者社區(qū)等 5 款新產(chǎn)品

下一篇:2018年,20大Python數(shù)據(jù)科學(xué)庫(kù)都做了哪些更新?