Skip to content

Commit

Permalink
add websockets demo
Browse files Browse the repository at this point in the history
  • Loading branch information
kylinsoong committed Feb 20, 2014
1 parent eac6fa9 commit f739545
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 9 deletions.
4 changes: 4 additions & 0 deletions undertow/quickstart/src/main/java/Doc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ mvn clean install dependency:copy-dependencies
http://localhost:8080/myapp/messageServlet
http://localhost:8080/myapp/myServlet

3. WebSocketServer

java -cp target/dependency/*:target/undertow-quickstart.jar org.wildfly.undertow.quickstart.websockets.WebSocketServer

3. ChatServer

java -cp target/dependency/*:target/undertow-quickstart.jar org.wildfly.undertow.quickstart.chat.ChatServer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/messageServlet")
public class MessageServlet extends HttpServlet {

private static final long serialVersionUID = 6861632231065498153L;
Expand All @@ -27,6 +24,4 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws S
writer.close();
}



}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/myServlet")
public class MyServlet extends HttpServlet {

private static final long serialVersionUID = 2378494112650465478L;
Expand All @@ -26,6 +24,4 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws S
writer.close();
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package org.wildfly.undertow.quickstart.websockets;

import java.io.IOException;

import io.undertow.Handlers;
import io.undertow.Undertow;
import io.undertow.server.handlers.resource.ClassPathResourceManager;
import io.undertow.websockets.WebSocketConnectionCallback;
import io.undertow.websockets.core.AbstractReceiveListener;
import io.undertow.websockets.core.BufferedTextMessage;
import io.undertow.websockets.core.WebSocketChannel;
import io.undertow.websockets.core.WebSockets;
import io.undertow.websockets.spi.WebSocketHttpExchange;

public class WebSocketServer {

public static void main(String[] args) {
Undertow server = Undertow.builder().addHttpListener(8080, "localhost")
.setHandler(Handlers.path().addPrefixPath("/myapp", Handlers.websocket(new WebSocketConnectionCallback(){

@Override
public void onConnect(WebSocketHttpExchange exchange,WebSocketChannel channel) {

channel.getReceiveSetter().set(new AbstractReceiveListener(){

@Override
protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) throws IOException {
WebSockets.sendText(message.getData(), channel, null);
}});

channel.resumeReceives();
}
}))
.addPrefixPath("/", Handlers.resource(new ClassPathResourceManager(WebSocketServer.class.getClassLoader(),WebSocketServer.class.getPackage())).addWelcomeFiles("index.html")))
.build();

server.start();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<html>
<head><title>Web Socket Test</title></head>
<body>
<script>
var socket;
if (window.WebSocket) {
socket = new WebSocket("ws://localhost:8080/myapp");
socket.onmessage = function(event) {
alert("Received data from websocket: " + event.data);
};
socket.onopen = function(event) {
alert("Web Socket opened!");
};
socket.onclose = function(event) {
alert("Web Socket closed.");
};
} else {
alert("Your browser does not support Websockets. (Use Chrome)");
}

function send(message) {
if (!window.WebSocket) {
return;
}
if (socket.readyState == WebSocket.OPEN) {
socket.send(message);
} else {
alert("The socket is not open.");
}
}
</script>
<form onsubmit="return false;">
<input type="text" name="message" value="Hello, World!"/>
<input type="button" value="Send Web Socket Data" onclick="send(this.form.message.value)"/>
</form>
</body>
</html>

0 comments on commit f739545

Please sign in to comment.