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

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

2018-07-31    來源:oschina

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
IMI

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

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

/**
 * 測試
 * @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()
	{
		// 握手處理,什么都不做,框架會幫你做好
	}
	
}

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

/**
 * 數(shù)據(jù)收發(fā)測試
 * @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);
	}

}

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

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

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

tcp聊天室demo及客戶端代碼,請查看imi-demo項目

v0.0.7 更新內容

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

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

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

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

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

  • 開放一些BeanProxy方法

  • 模型生成支持視圖

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

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

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

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

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

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

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

  • 提取獲取進程ID的方法到工具類

  • 修復模型生成的前綴處理問題

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

  • 修復Bean類緩存清除問題

介紹

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

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

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

框架的擴展性強,開發(fā)者可以根據(jù)實際需求,自行開發(fā)相關驅動進行擴展。不止于框架本身提供的功能和組件!

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

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

官網:https://www.imiphp.com/
文檔手冊:https://doc.imiphp.com/

代碼倉庫:
碼云:https://gitee.com/yurunsoft/IMI
Github:https://github.com/Yurunsoft/IMI

空項目:https://gitee.com/yurunsoft/empty-imi-demo
功能Demo:https://gitee.com/yurunsoft/imi-demo

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

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

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

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