netty處理客戶端傳過來的get、post、websocket數據例子

jopen 10年前發布 | 41K 次閱讀 網絡工具包 Netty

用neety作為http服務器,在服務器端讀取客戶端傳過來的get和post參數和websocket數據例子,netty版本3.6.6。

package com.penngo.http;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;

public class HttpServer {

    private final int port;

    public HttpServer(int port) {
        this.port = port;
    }

    public void run() {
        ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(
                Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
        bootstrap.setPipelineFactory(new HttpServerPipelineFactory());

        bootstrap.bind(new InetSocketAddress(port));
        System.out.println("Web socket server started at port " + port + '.');
        System.out.println("Open your browser and navigate to http://localhost:" + port + '/');
    }

    public static void main(String[] args) {
        int port;
        if (args.length > 0) {
            port = Integer.parseInt(args[0]);
        } else {
            port = 8080;
        }
        new HttpServer(port).run();
    }
}

測試代碼

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Web Socket Example</title>
        <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js" type="text/javascript"></script>
        <style>
        textarea {
    width: 500px;
    height: 100px;
}
        </style>
        <script>
        $(function(){

            var Sock = function() {
         var socket;
         if (!window.WebSocket) {
             window.WebSocket = window.MozWebSocket;
         }

         if (window.WebSocket) {
             socket = new WebSocket("ws://localhost:8080/websocket");
             socket.onopen = onopen;
             socket.onmessage = onmessage;
             socket.onclose = onclose;
         } else {
             alert("Your browser does not support Web Socket.");
         }

         function onopen(event) {
             getTextAreaElement().value = "Web Socket opened!";
         }

         function onmessage(event) {
             appendTextArea(event.data);
         }

         function onclose(event) {
             appendTextArea("Web Socket closed");
         }

         function appendTextArea(newData) {
             var el = getTextAreaElement();
             el.value = el.value + '\n' + newData;
         }

         function getTextAreaElement() {
             return document.getElementById('responseText');
         }

         function send(event) {
             event.preventDefault();
             if (window.WebSocket) {
         if (socket.readyState == WebSocket.OPEN) {
             socket.send(event.target.message.value);
         } else {
             alert("The socket is not open.");
         }
             }
         }
         document.forms.inputform.addEventListener('submit', send, false);
            }
            window.addEventListener('load', function() {
         new Sock();
            }, false);

            $("#btnGet").click( function () {
             $.get("http://localhost:8080/", { q: "John"},
             function(data){
           $("#responseTextGet").val($("#responseTextGet").val() + data)
             });
            });
$("#btnPost").click( function () {
$.post("http://localhost:8080/", { q: "John"},
  function(data){
$("#responseTextPost").val($("#responseTextGet").val() + data)
  });
            });
        });

        </script>
    </head>
    <body>
        <h3>輸入內容</h3>
        <form name="inputform">
            <input type="text" name="message" id="message" placeholder="Enter text to be sent" autofocus>
            <input type="submit" value="發送WebSocket數據">
        </form>
        <h3>服務端返回</h3>
        <textarea id="responseText"></textarea>
        <h3>輸入內容</h3>
        <form name="inputform">
            <input type="text" name="message" id="messageGet" placeholder="Enter text to be sent" autofocus>
            <input type="button" value="Get數據" id="btnGet">
        </form>
        <h3>服務端返回</h3>
        <textarea id="responseTextGet"></textarea>
        <h3>輸入內容</h3>
        <form name="inputform">
            <input type="text" name="message" id="messagePost" placeholder="Enter text to be sent" autofocus>
            <input type="button" value="Post數據" id="btnPost">
        </form>
        <h3>服務端返回</h3>
        <textarea id="responseTextPost"></textarea>
    </body>
</html>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!