netty處理客戶端傳過來的get、post、websocket數據例子
用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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!