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