1. 程式人生 > >Play框架的Netty Http伺服器實現

Play框架的Netty Http伺服器實現

Play使用Bootstrap初始化伺服器Channel,設定Channel類,EventLoop和Handler等。 (Play沒有使用專為伺服器準備的ServerBoostrap,而是使用更加通用的Bootstrap。這樣就可以自己安排對客戶端Channel的設定) private def bind(address: InetSocketAddress): (Channel, Source[Channel, _]) = {   val serverChannelEventLoop = eventLoop.next   // Watches for channel events, and pushes them through a reactive streams publisher.   val channelPublisher = new HandlerPublisher(serverChannelEventLoop, classOf[Channel])   val channelClass = transport match {     case Native => classOf[EpollServerSocketChannel]     case Jdk => classOf[NioServerSocketChannel]   }   //使用Bootstrap建立伺服器Channel   val bootstrap = new Bootstrap()     .channel(channelClass)     .group(serverChannelEventLoop)     .option(ChannelOption.AUTO_READ, java.lang.Boolean.FALSE) // publisher does ctx.read()     .handler(channelPublisher)     .localAddress(address)   setOptions(bootstrap.option, nettyConfig.getConfig("option"))   val channel = bootstrap.bind.await().channel()   //將伺服器Channel收集到allChannels中   allChannels.add(channel)   //返回伺服器Channel, 和Akka Stream Source   (channel, Source.fromPublisher(channelPublisher)) } 當有新的客戶端連線伺服器時,伺服器Channel上的Handler HandlerPublisher會讀取到新連線的客戶端Channel,然後將客服端Channel釋出到到Akka Stream。在Akka Stream Sink中進行客戶端Pipeline的設定和Event loop的繫結,並將所有的客戶端Channel收集到NettyServer.allChannels屬性中。

相關推薦

Play框架Netty Http伺服器實現

Play使用Bootstrap初始化伺服器Channel,設定Channel類,EventLoop和Handler等。 (Play沒有使用專為伺服器準備的ServerBoostrap,而是使用更加通用的Bootstrap。這樣就可以自己安排對客戶端Channel的設定)

基於libevent框架搭建http伺服器

#include <stdlib.h> #include <stdio.h> #include <string.h> //libevent http server header files #include <event2/http.h> #in

簡單HTTP伺服器實現

   我們這裡實現一個簡單的HTTP伺服器,無論瀏覽器向我們請求什麼資料,我們都返回一個hello world    //實現最簡單的http服務端程式 //返回hello world //http是應用協議,在傳輸層使用的是tcp協議所

手機app內建http伺服器實現電腦端訪問手機html頁面(上)

一、準備及原型 前言 這個暑假接了一個小專案,用cordova實現一個表型採集的app,其中一個檔案傳輸匯入匯出的的需求使:手機端開啟服務,在同一個wifi環境下,電腦瀏覽器進行訪問手機ip地址,然後顯示出手機暴露的頁面,再進行相關的操作。 第一念頭:什麼鬼的需求! 但是

使用poco庫搭建簡單http伺服器實現hello world

原始碼例子如下: #include "Poco/Net/HTTPServer.h" #include "Poco/Net/HTTPRequestHandler.h" #include "Poco/Net/HTTPRequestHandlerFactory.h" #incl

採用beego框架構建 http伺服器

     beego是一個使用 Go 的思維來快速構建並開發 Go 應用程式的開源http框架,作者是謝孟軍。它可以快速開發API、Web、後端服務等各種應用,功能支援RESTFul,MVC模型;含有智慧路由,內建強大模組,採用了 Go 原生的 http 包來處

Http伺服器實現檔案上傳與下載(二)

一、引言 歡迎大家接著看我的部落格,如何大家有什麼想法的話回覆我哦,閒話不多聊了,接著上一講的內容來說吧,在上一節中已經講到了請求頭字串的解析,並且在解析中我我們已經獲取了url。就是上節中提到的/doing。當瀏覽器傳送了/doing請求後,這是的與伺服器的連線並沒有

Http伺服器實現檔案上傳與下載(五)

一、引言      歡迎大家和我一起編寫Http伺服器實現檔案的上傳和下載,現在我回顧一下在上一章節中提到的一些內容,之前我已經提到過檔案的下載,在檔案的下載中也提到了檔案的續下載只需要在響應頭中填寫Content-Range這一欄位,並且伺服器的檔案指標指向讀取的指定

nodejs中tcp伺服器http伺服器實現的異同

一,相同點 1,都呼叫了createServer方法。 2,當客戶端接入時都會執行一個回撥函式。 二,不同之處 1,回撥函式的中物件的型別。net伺服器中,是個連線(connect)

Http伺服器實現檔案上傳與下載(一)

一、引言   大家都知道web程式設計的協議就是http協議,稱為超文字傳輸協議。在J2EE中我們可以很快的實現一個Web工程,但在C++中就不是非常的迅速,原因無非就是底層的socket網路編寫需要自己完成,上層的http協議需要我們自己完成,使用者介面需要我們自己完

Http伺服器實現檔案上傳與下載(三)

一、引言   在前2章的內容基本上已經講解了整個的大致流程。在設計Http伺服器時,我設計為四層的結構,最底層是網路傳輸層,就是socket程式設計。接著一層是請求和響應層,叫做Request和Response。在上一層是URL解析流程走向層。最頂層我設計為索引層。這一層主要多檔案時對檔案進行記憶體上的索引

Http伺服器實現檔案上傳與下載(四)

一、引言   歡迎大家來到和我一起編寫Http伺服器實現檔案的上傳和下載,現在我稍微回顧一下之前我說的,第一、二章說明說明了整體的HTTP走向,第三章實現底層的網路程式設計。接著這一章我想給大家講的是請求獲取,和響應傳送的內容。這裡主要講解的響應內容,為什麼?因為我們編寫的是一個與瀏覽器互動的HTTP伺服器

使用SSM框架搭建Web伺服器實現登入功能(Spring+SpringMVC+Mybatis)

SSM框架搭建流程 上面連結總結的流程很好,但是該流程沒有加入DAO這一層,經過分析本專案原始碼,流程應該是這樣的: database–>Entity.java–>mapper.xml–>Mapper.java–>Dao.java–>D

http伺服器實現(二)

前言 本文基於http伺服器實現(一)來完成http報文解析部分。 涉及到的內容有: http協議格式 狀態機變遷 字串解析 伺服器原始碼 客戶端原始碼和測試結果 一、http協議 這一節的重點是解析http報文,那麼首先我們必須知道http協議格

Netty(六) Netty Http伺服器例子

Http伺服器 package com.zqw.netty.http; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.chann

Python將本機作為http伺服器實現檔案的共享

如需將本機檔案傳輸或者分享給其他人怎麼辦?在終端視窗輸入  python -m http.server(預設8000,也可改為其他)這時候就可以瀏覽器訪問該埠了當分享物件比較多的時候,這不失為一個好方法

nginx 配置http伺服器實現負載均衡(二)

在nginx實現負載均衡前,需要下載tomcat,我這裡裝的是8.5.43,下載地址:https://tomcat.apache.

基於netty實現http伺服器

匯入netty4的依賴 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>

使用Netty實現HTTP伺服器

使用Netty實現HTTP伺服器,使用Netty實現httpserver。 Netty是一個非同步事件驅動的網路應用程式框架用於快速開發可維護的高效能協議伺服器和客戶端。Netty經過精心設計,具有豐富的協議,如FTP,SMTP,HTTP以及各種二進位制和基於文字的傳統協議。 Java程式設計師在開發we

Netty實現高效能的HTTP伺服器

16:58:59.130 [nioEventLoopGroup-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxSharedCapacityFactor: 2 16:58:59.130 [nioEventLoopGroup-3-1