Java WebSocket——一个简单的例子(注解式)

来源:互联网 发布:pano2vr.js 域名限制 编辑:程序博客网 时间:2024/06/06 23:55

第一步:创建WebSocket端点(服务器端)

/** *  */package com.webSocket.demo;import javax.websocket.OnMessage;import javax.websocket.server.ServerEndpoint;/** * 注解@ServerEndpoint是类级别注解,用于告诉Java平台它注解的类是一个WebSocket端点。 * 该注解的唯一强制参数是相对URI * @author Memphy * 2016年1月18日 下午2:30:59 */@ServerEndpoint("/server")public class Server {/** * 注解@OnMessage是方法级别注解,该注解指定了被注解的方法处理入站消息 * @param incomingMessage 入站消息 * @return String 服务器端返回的数据 */@OnMessagepublic String reply(String incomingMessage) {return "The server has received message:" + incomingMessage;}}


第二步:创建WebSocket端点(客户端)

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>Java WebSocket Demo</title>    <script type="text/javascript" language="javascript">    var webSocket;    var uri = "ws://localhost:8080/WebSocketDemo/server"    function webSocketDemo() {    openWebSocket(uri);    initEventHandler();    }        function openWebSocket(uri) {    webSocket = new WebSocket(uri);    }        //绑定事件    function initEventHandler() {    webSocket.onopen = function (event) {    alert("connected!");    var message = document.getElementById("in_message").value;    sendMessage(message);    }    webSocket.onmessage = function (event) {    alert("received message : \n" + event.data);    closeWebSocket();    }    webSocket.onerror = function (event) {    alsert("error : " + evnet.data);    closeWebSocket();    }    }    //发送消息到另一个websocket端    function sendMessage(message) {    webSocket.send(message);    }    //关闭webSocket    function closeWebSocket() {    webSocket.close();    }    </script><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <h1>Java WebSocket Demo</h1>  <form action="">  <input type="button" onclick="webSocketDemo()" value="press to send message">  <input id="in_message" value="Hello word!">  </form>  </body></html>


分析:

端点是Java WebSocket API组件模型的中心:每一个使用Java WebSocket API 所创建的WebSocket应用都有WebSocket端点的参与。我们使用术语“端点”来表示WebSocket对话的一端。当通过@ServerEndpoint来注解Server类时,它将该Java类转换成逻辑上的WebSocket端点。当部署包含Server类的应用时,WebSocket实现首先扫描包含Server类的WAR文件,找到其中的WebSocket端点,然后将此类注册成WebSocket端点。当客户端通过URI/server来尝试建立到端点的连接时,因为该URI匹配请求中的URI,WebSocket实现将创建Server类的一个新实例,并使得此Server类的实例为后续的WebSocket对话服务。


参考书籍:

 《Java WebSocket编程 开发、部署和保护动态Web应用》/(美)科沃德(Coward, D.) 著;刘建、夏先波 译. ——北京:清华大学出版社,2015

0 0
原创粉丝点击