体验WebSocket
来源:互联网 发布:淘宝收不到自己的店铺 编辑:程序博客网 时间:2024/06/05 16:09
- WebSocket Javascript Client
- WebSocket Java Client
- WebSocket Server
环境:
java version "1.7.0_71"
pom.xml
<dependency><groupId>org.eclipse.jetty.websocket</groupId><artifactId>websocket-server</artifactId><version>9.2.8.v20150217</version></dependency>
<dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-client</artifactId> <version>9.2.8.v20150217</version></dependency>
WebSocket Javascript Client
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>WebSocket Test</title><script src="external/jquery/jquery.js"></script><script> $(function() {var wsUri = "ws://localhost:8080/echo";var websocket = new WebSocket(wsUri);websocket.onopen = function(evt) {onOpen(websocket, evt)};websocket.onclose = function(evt) {onClose(evt)};websocket.onmessage = function(evt) {onMessage(websocket, evt)};websocket.onerror = function(evt) {onError(evt)};})function onOpen(websocket, evt) {writeToScreen("CONNECTED");var msg = "test msg";writeToScreen("SENT: " + msg);websocket.send(msg);}function onClose(evt) {writeToScreen("DISCONNECTED");}function onMessage(websocket, evt) {writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data + '</span>');websocket.close();}function onError(evt) {writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);}function writeToScreen(message) {$("#output").append("<p>" + message + "</p>");}</script><body><h2>WebSocket Test</h2><div id="output"></div></body></html>
Ref: http://www.websocket.org/echo.html
package examples;import java.net.URI;import java.util.concurrent.TimeUnit;import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;import org.eclipse.jetty.websocket.client.WebSocketClient;/** * Example of a simple Echo Client. */public class SimpleEchoClient { public static void main(String[] args) { String destUri = "ws://localhost:8080/echo"; if (args.length > 0) { destUri = args[0]; } WebSocketClient client = new WebSocketClient(); SimpleEchoSocket socket = new SimpleEchoSocket(); try { client.start(); URI echoUri = new URI(destUri); ClientUpgradeRequest request = new ClientUpgradeRequest(); client.connect(socket, echoUri, request); System.out.printf("Connecting to : %s%n", echoUri); socket.awaitClose(50, TimeUnit.SECONDS); } catch (Throwable t) { t.printStackTrace(); } finally { try { client.stop(); } catch (Exception e) { e.printStackTrace(); } } }}
package examples; import java.util.concurrent.CountDownLatch;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;import org.eclipse.jetty.websocket.api.Session;import org.eclipse.jetty.websocket.api.StatusCode;import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;import org.eclipse.jetty.websocket.api.annotations.WebSocket; /** * Basic Echo Client Socket */@WebSocket(maxTextMessageSize = 64 * 1024)public class SimpleEchoSocket { private final CountDownLatch closeLatch; @SuppressWarnings("unused") private Session session; public SimpleEchoSocket() { this.closeLatch = new CountDownLatch(1); } public boolean awaitClose(int duration, TimeUnit unit) throws InterruptedException { return this.closeLatch.await(duration, unit); } @OnWebSocketClose public void onClose(int statusCode, String reason) { System.out.printf("Connection closed: %d - %s%n", statusCode, reason); this.session = null; this.closeLatch.countDown(); } @OnWebSocketConnect public void onConnect(Session session) { System.out.printf("Got connect: %s%n", session); this.session = session; try { Future<Void> fut; fut = session.getRemote().sendStringByFuture("Hello"); fut.get(20, TimeUnit.SECONDS); fut = session.getRemote().sendStringByFuture("Thanks for the conversation."); fut.get(20, TimeUnit.SECONDS); session.close(StatusCode.NORMAL, "I'm done"); } catch (Throwable t) { t.printStackTrace(); } } @OnWebSocketMessage public void onMessage(String msg) { System.out.printf("Got msg: %s%n", msg); }}
Ref: http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html
import org.eclipse.jetty.server.Server;import org.eclipse.jetty.server.handler.DefaultHandler;import org.eclipse.jetty.server.handler.HandlerList;import org.eclipse.jetty.servlet.ServletContextHandler;import org.eclipse.jetty.servlet.ServletHolder;public class WebServer {public static void main(String[] args) {Server server = new Server(8080); try { HandlerList handlerList = new HandlerList(); ServletContextHandler context = new ServletContextHandler( ServletContextHandler.SESSIONS); context.setContextPath("/"); context.addServlet(new ServletHolder(new MyEchoServlet()), "/echo"); handlerList.addHandler(context); handlerList.addHandler(new DefaultHandler()); server.setHandler(handlerList); server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } }}
import javax.servlet.annotation.WebServlet;import org.eclipse.jetty.websocket.servlet.WebSocketServlet;import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;@SuppressWarnings("serial")@WebServlet(name = "MyEcho WebSocket Servlet", urlPatterns = { "/echo" })public class MyEchoServlet extends WebSocketServlet { @Override public void configure(WebSocketServletFactory factory) { factory.getPolicy().setIdleTimeout(10000); factory.register(MyEchoSocket.class); }}
import java.io.IOException;import org.eclipse.jetty.websocket.api.Session;import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;import org.eclipse.jetty.websocket.api.annotations.WebSocket; /** * Basic Echo Socket */@WebSocket(maxTextMessageSize = 64 * 1024)public class MyEchoSocket { private Session session; public MyEchoSocket() { } @OnWebSocketClose public void onClose(int statusCode, String reason) { System.out.printf("Connection closed: %d - %s%n", statusCode, reason); this.session = null; } @OnWebSocketConnect public void onConnect(Session session) { System.out.printf("Got connect: %s%n", session); this.session = session; } @OnWebSocketMessage public void onMessage(String msg) { System.out.printf("Got msg: %s%n", msg); try {session.getRemote().sendString("RESPONSE : " + msg);} catch (IOException e) {e.printStackTrace();} }}Ref: http://www.eclipse.org/jetty/documentation/current/jetty-websocket-server-api.html
0 0
- 体验WebSocket
- WebSocket初体验(Netty)
- 使用socket.io与express结合,体验websocket
- WebSocket
- WebSocket
- WebSocket
- websocket
- WebSocket
- WebSocket
- WebSocket
- WebSocket
- websocket
- websocket
- WebSocket
- WebSocket
- WebSocket
- WebSocket
- websocket
- DP入门50题(7)——NYoj37 回文字符串
- PAT B1024或A1073 科学计数法 有空必须再做的
- POJ 3070解题报告
- 为sourceinsight添加makefile、kconfig、*.S、*.s文件支持
- [BZOJ 1012] 最大数maxnumber
- 体验WebSocket
- 九度OJ题目1055:数组逆置
- Spring MVC 学习(一)
- xampp修改mysql默认的空密码
- Android SystemClock
- Swift UI专项训练3 第二个场景
- 【日常学习】【双端队列】 Uva - 210 Concurrency Simulator题解
- POJ 题目1936 All in All(水题,暴力)
- HDU 2855解题报告