成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java-netty-study-2-netty 服務(wù)端

jsliang / 2192人閱讀

摘要:服務(wù)端編寫部分代碼說(shuō)明和的線程和里面都是一個(gè)線程分配一個(gè)。功能接收客戶端的數(shù)據(jù)功能返回?cái)?shù)據(jù)給客戶端功能可以在這個(gè)方法里監(jiān)控一個(gè)客戶端每秒發(fā)送了多少請(qǐng)求,避免惡意的客戶端攻擊。

Netty 服務(wù)端編寫 1、bootStrap 部分
        final Bootstrap bootstrap = new ServerBootstrap();
        ExecutorService boss = Executors.newCachedThreadPool();
        ExecutorService worker = Executors.newCachedThreadPool();

        bootstrap.setFactory(new NioServerSocketChannelFactory(boss, worker));

        bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
            public ChannelPipeline getPipeline() throws Exception {
                
                final ChannelPipeline pipeline = Channels.pipeline();
                pipeline.addLast("decoder", new StringDecoder());
                pipeline.addLast("encoder",new StringEncoder());
                pipeline.addLast("messageHandler",new ServerHandler());
                return pipeline;
            }
        });
        
        ((ServerBootstrap) bootstrap).bind(new InetSocketAddress(10101));

代碼說(shuō)明

1.1 boss VS worker

boss和worker的線程

boss和worker 里面都是一個(gè)線程分配一個(gè)Selector。

boss和worker的功能

boss的功能主要是處理連接,worker的功能是Channel的讀寫

2、客戶端部分 2.1 handler繼承父類

2.2 Handler 常用方法說(shuō)明 2.2.1 messageReceived
        //1、接收數(shù)據(jù)
        /*
        沒(méi)有StringDecoder時(shí),顯示字符串消息
        final ChannelBuffer message = (ChannelBuffer) e.getMessage();
        final byte[] array = message.array();
        final String msg = new String(array);
        System.out.println("message is :" + msg);
        */

        //有StringDecoder
        System.out.println(e.getMessage());

        //2、返回?cái)?shù)據(jù)
        //返回?cái)?shù)據(jù)給客戶端
        /*
        沒(méi)有StringEnCoder
        final ChannelBuffer channelBuffer = ChannelBuffers.copiedBuffer("hi, i"m 
        server".getBytes());
        ctx.getChannel().write(channelBuffer);
        */
        //有StringEnCoder
        ctx.getChannel().write("hi, i"m server");

        //3、拋出異常,看exceptionCaught 方法
        //System.out.println(1/0);

        super.messageReceived(ctx, e)

代碼說(shuō)明

關(guān)于StringEncoder,和StringDecoder
在Server中添加了上述的encoder和decoder,我們就可以直接接收和返回String類型的數(shù)據(jù)給客戶端??搭惖睦^承關(guān)系:


截圖說(shuō)明
Netty 中和客戶端的數(shù)據(jù)傳輸有個(gè)上行和下行,UpStream,DownStream. 我們注意到Handler的父類中也同時(shí)繼承了這兩個(gè)類。

-功能1

 接收客戶端的數(shù)據(jù)

-功能2

 返回?cái)?shù)據(jù)給客戶端

-功能3

 可以在這個(gè)方法里監(jiān)控一個(gè)客戶端每秒發(fā)送了多少請(qǐng)求,避免惡意的客戶端攻擊。可以獲取客戶端ip,調(diào)用Channel的close方法關(guān)閉連接。

備注:
接收和返回?cái)?shù)據(jù)異常,會(huì)調(diào)用exceptionCaught

2.2.2 exceptionCaught

功能1
messageReceived方法處理數(shù)據(jù)拋出異常,這個(gè)方法會(huì)調(diào)用

2.2.3 channelConnected

功能1

一個(gè)用戶連接了,加載這個(gè)用戶的相關(guān)數(shù)據(jù)到緩存中

2.2.4 channelDisconnected VS channelClosed

功能1

比如做游戲,一個(gè)玩家上線了,建立連接,我們就要把玩家的一些數(shù)據(jù)讀取到緩存(redis/memcached)中,當(dāng)玩家下線了,這兩個(gè)方法調(diào)用,那么清空緩存中的數(shù)據(jù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71899.html

相關(guān)文章

  • java-netty-study-2-netty 客戶

    Netty 客戶端 1、Code 代碼:https://github.com/chengbingh... 服務(wù)類 線程池 socket 工廠 管道工廠 連接服務(wù)端 發(fā)送數(shù)據(jù)

    JouyPub 評(píng)論0 收藏0
  • React 服務(wù)渲染完美的解決方案

    摘要:服務(wù)端渲染兩種方式根據(jù)上文介紹對(duì)服務(wù)端渲染利弊有所了解,我們可以根據(jù)利弊權(quán)衡取舍,最近在做服務(wù)端渲染的項(xiàng)目,找到多種服務(wù)端渲染解決方案,大致分為兩類。第一種方式傳統(tǒng)方式服務(wù)端渲染,解決用戶體驗(yàn)和更好的,有諸多工具使用這種方式如的的等。 最近在開發(fā)一個(gè)服務(wù)端渲染工具,通過(guò)一篇小文大致介紹下服務(wù)端渲染,和服務(wù)端渲染的方式方法。在此文后面有兩中服務(wù)端渲染方式的構(gòu)思,根據(jù)你對(duì)服務(wù)端渲染的利弊權(quán)...

    DesGemini 評(píng)論0 收藏0
  • React同構(gòu)直出優(yōu)化總結(jié)

    摘要:同構(gòu)的關(guān)鍵要素完善的屬性及生命周期與客戶端的時(shí)機(jī)是同構(gòu)的關(guān)鍵。的一致性在前后端渲染相同的,將輸出一致的結(jié)構(gòu)。以上便是在同構(gòu)服務(wù)端渲染的提供的基礎(chǔ)條件??梢詫⒎庋b至的中,在服務(wù)端上生成隨機(jī)數(shù)并傳入到這個(gè)中,從而保證隨機(jī)數(shù)在客戶端和服務(wù)端一致。 原文地址 React 的實(shí)踐從去年在 PC QQ家校群開始,由于 PC 上的網(wǎng)絡(luò)及環(huán)境都相當(dāng)好,所以在使用時(shí)可謂一帆風(fēng)順,偶爾遇到點(diǎn)小磕絆,也能夠...

    alaege 評(píng)論0 收藏0
  • 干貨實(shí)例:什么是React服務(wù)渲染?

    摘要:今天分享一篇公司大佬的文章,非常厲害的大神崇拜臉,講講服務(wù)端渲染。服務(wù)端渲染,它到底用了什么原理呢服務(wù)端渲染原理服務(wù)端渲染的方式有很多,主流的服務(wù)端語(yǔ)言為使用渲染。 富婆來(lái)報(bào)道,今天想問(wèn)題想不出來(lái),隨手抓了一下頭發(fā),沒(méi)想到啊沒(méi)想到,我那濃(mei)密(sheng)茂(ji)盛(gen)的秀發(fā)又少了好幾根,一定要改掉這個(gè)想不出來(lái)問(wèn)題就揪頭發(fā)的壞習(xí)慣。今天分享一篇公司大佬的文章,非常厲害的...

    Jason_Geng 評(píng)論0 收藏0
  • 【翻譯】Web渲染概述

    摘要:由我所在的團(tuán)隊(duì)共同翻譯完成,并發(fā)布在前端技術(shù)公眾號(hào)方凳雅集上,轉(zhuǎn)載于此。在移動(dòng)端,客戶端渲染很難獲得并保持一個(gè)較快的渲染速度。使用技術(shù)進(jìn)行服務(wù)端渲染的主要問(wèn)題在于它會(huì)對(duì)可交互時(shí)間有明顯的負(fù)面影響,盡管它縮短了首次繪制時(shí)間 本文簡(jiǎn)單介紹了web應(yīng)用各種渲染方案,其中包括客戶端渲染、服務(wù)器端渲染等各種渲染方案。文章翻譯自:https://developers.google.com...。由...

    RobinQu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<