undertow에서 WebSocket 실행 간단한 실례
import static io.undertow.Handlers.path;
import static io.undertow.Handlers.resource;
import static io.undertow.Handlers.websocket;
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(final String[] args) {
Undertow server = Undertow
.builder()
.addListener(8080, "0.0.0.0")
.setHandler(
path().addPrefixPath("/websocket",
websocket(new WebSocketConnectionCallback() {
@Override
public void onConnect(
WebSocketHttpExchange exchange,
WebSocketChannel channel) {
channel.getReceiveSetter().set(
new AbstractReceiveListener() {
@Override
protected void onFullTextMessage(
WebSocketChannel channel,
BufferedTextMessage message) {
WebSockets.sendText(
message.getData(),
channel, null);
}
});
channel.resumeReceives();
}
})).addPrefixPath(
"/",
resource(
new ClassPathResourceManager(
WebSocketServer.class
.getClassLoader(),
WebSocketServer.class
.getPackage()))
.addWelcomeFiles("index.html")))
.build();
server.start();
}
}
2.페이지 파일 index를 만듭니다.html
<html>
<head><title>Web Socket Test</title>
<meta name="viewport" content="width=device-width">
</head>
<body>
<script>
var socket;
if (window.WebSocket) {
socket = new WebSocket("ws://192.168.1.11:8080/websocket");
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>
3.브라우저에 다음을 입력합니다.http://ip:8080휴대폰과 컴퓨터 모두 액세스 가능
참조:
http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
iPad에서 WebSocket + Authorization이 연결되지 않음발단은 iPad에서의 개발 환경을 정비하려고 했기 때문이었습니다. VPS에 개발 환경을 넣을 수 있으면 편리하다고 생각해, 를 인스톨 해, 그대로는 누구라도 사용할 수 버리므로, Apache를 리버스 프록시로 해, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.