`
Janne
  • 浏览: 44748 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

WebScocket Example

阅读更多

 

WebScocket Example

转载自:http://blog.sina.com.cn/s/blog_a8b026160101jqnq.html

 

分类: JSP

<!-- 正文开始 -->

1.客户端:
 
        var ws = null;
        function setConnected(connected) {                             // 按钮状态转换
            document.getElementByIdx_x('connect').disabled = connected;
            document.getElementByIdx_x('disconnect').disabled = !connected;
            document.getElementByIdx_x('echo').disabled = !connected;
        }
 
        function connect() {                                           // 链接方式及对象
            var target = document.getElementByIdx_x('target').value;
            if (target == '') {
                alert('Please select server side connection implementation.');
                return;
            }
            if ('WebSocket' in window) {
                ws = new WebSocket(target);
            } else if ('MozWebSocket' in window) {
                ws = new MozWebSocket(target);
            } else {
                alert('WebSocket is not supported by this browser.');
                return;
            }
            ws.onopen = function () {                                // 链接成功处理
                setConnected(true);
                log('Info: WebSocket connection opened.');
            };
            ws.onmessage = function (event) {                        // 收到服务器信息
                log('Received: ' + event.data);
            };
            ws.onclose = function () {                               // 链接中断处理
                setConnected(false);
                log('Info: WebSocket connection closed.');
            };
        }
 
        function disconnect() {                                     // 按钮中断链接
            if (ws != null) {
                ws.close();
                ws = null;
            }
            setConnected(false);
        }
 
        function echo() {                                           // 信息发送
            if (ws != null) {
                var message = document.getElementByIdx_x('message').value;
                log('Sent: ' + message);
                ws.send(message);
            } else {
                alert('WebSocket connection not established, please connect.');
            }
        }
 
        function updateTarget(target) {                           // 链接方式及对象
            if (window.location.protocol == 'http:') {
                document.getElementByIdx_x('target').value = 'ws://' + window.location.host + target;
            } else {
                document.getElementByIdx_x('target').value = 'wss://' + window.location.host + target;
            }
        }
 
        function log(message) {                                   // 客户端显示
            var console = document.getElementByIdx_x('console');
            var p = document.createElement_x('p');
            p.style.wordWrap = 'break-word';
            p.appendChild(document.createTextNode(message));
            console.appendChild(p);
            while (console.childNodes.length > 25) {
                console.removeChild(console.firstChild);
            }
            console.scrollTop = console.scrollHeight;
        }
        
        document.addEventListener("DOMContentLoaded", function() {
            // Remove elements with "noscript" class -<noscript></noscript>
            var noscripts = document.getElementsByClassName("noscript");
            for (var i = 0; i < noscripts.length; i++) {
                noscripts[i].parentNode.removeChild(noscripts[i]);
            }
        }, false);
   
  页面设计:
 
 
                   onclick="updateTarget(this.value);"/> 
 
 
                   onclick="updateTarget(this.value);"/> annotation 
 
        
 Connect
 Disconnect        
         
 Echo message        
 
 
 
 
2. 服务器端
package websocket.echo;
 
import java.io.IOException;
import java.nio.ByteBuffer;
 
import javax.websocket.OnMessage;
import javax.websocket.PongMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
 
@ServerEndpoint("/websocket/testecho")  // 指定程序位置
public class testecho {
@OnMessage     // 收到字符串信息
public void echoTextMessage(Session session, String msg, boolean last) {     // 收到客户端字符串
        try {
            if (session.isOpen()) {
            System.out.println("session的值是: "+session.toString());
            System.out.println("testecho 发送字符串消息"+msg);
            msg=msg+"testecho返回";
                session.getBasicRemote().sendText(msg, last);                  // 发回客户端
                msg="123456";
                session.getBasicRemote().sendText(msg, last); 
                
            }
        } catch (IOException e) {
            try {
                session.close();
                } catch (IOException e1) { }
        }
    }
 
@OnMessage   // 收到二进制信息
public void echoBinaryMessage(Session session, ByteBuffer bb,boolean last){ // 收到客户端二进制
        try {
            if (session.isOpen()) {
            System.out.println("testecho 发送二进制消息"+bb);
                session.getBasicRemote().sendBinary(bb, last);                // 发回客户端
            }
        } catch (IOException e) {
            try {
                session.close();
            } catch (IOException e1) { }
        }
    }
 
   
    @OnMessage
    public void echoPongMessage(PongMessage pm) {
        // NO-OP
    }
}  
 
分享到:
评论

相关推荐

    Hibernate中Example的用法

    ### Hibernate中Example的用法详解 #### 一、前言 Hibernate作为一款强大的ORM(对象关系映射)框架,提供了多种灵活的查询方式,其中`Example`查询是基于对象实例进行匹配查询的一种方法,它允许开发者通过提供一...

    Example_example软件_ABAQUSUMAT_源码

    本文将围绕"Example_example软件_ABAQUSUMAT_源码"这一主题,深入探讨UMAT的使用方法以及提供的几个实例。 UMAT是ABAQUS中的核心组成部分,它通过用户编写FORTRAN代码来定义材料的应力-应变关系。UMAT子程序包含五...

    Django2-by-example-zh.pdf 中文版 20190129修订

    Django 2 by example 博客项目–基础 Django 2 by example 博客项目–增加高级功能 Django 2 by example 博客项目–扩展功能 Django 2 by example 社交网站项目–用户身份验证 Django 2 by example 社交网站项目–-...

    Go By Example 中文版

    Go By Example 中文版 Go By Example 中文版 Go By Example 中文版

    逆向工程Example方法使用说明

    ### 逆向工程Example方法使用说明 #### 一、引言 在软件开发过程中,特别是在使用MyBatis框架处理数据库操作时,繁琐的手工编写Mapper文件可能会极大地降低开发效率。为了提高开发效率并减少错误,逆向工程成为了一...

    silvaco example.zip

    这个"silvaco example.zip"压缩包提供了丰富的示例,帮助用户深入理解Silvaco TCAD的功能和应用。每个示例都涵盖了不同的模型,通过详尽的注释和可视化图像,使得学习过程更为直观易懂。 首先,我们来看看"tcad_...

    MiniDao-example1.2

    MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2MiniDao-example1.2...

    VHDL例程源码 example_confi

    VHDL例程源码 example_confiVHDL例程源码 example_confiVHDL例程源码 example_confiVHDL例程源码 example_confiVHDL例程源码 example_confiVHDL例程源码 example_confiVHDL例程源码 example_confiVHDL例程源码 ...

    React Native By Example

    React Native By Example by Richard Kho English | 24 Apr. 2017 | ASIN: B01M31KB4Q | 414 Pages | AZW3 | 4.46 MB Key Features Work on native APIs and UI Elements using React Native Get the best of both...

    jni-example.zip

    以上命令的路径我写的是绝对路径:/complie2/wangwei/svn_8880_r95/android/android-4.2.1_r1/out/target/common/obj/APPS/jni_example_intermediates/classes 下面的com.example.jni_example.MainActivity ...

    ibatis Example使用

    根据提供的文件信息,我们可以从中提炼出与ibatis及其Example特性相关的知识点。以下是对这些知识点的详细阐述: ### 1. **ibatis简介** ibatis(现称为MyBatis)是一种支持普通SQL查询、存储过程及高级映射的优秀...

    Java开发example2

    example2 example2 example2 example2 example2

    example.com

    example.com

    SELinux-by-Example-Using-Security-Enhanced-Linux

    SELinux by example is the first complete, hands-on guide to using SELinux in production environments. Authored by three leading SELinux researchers and developers, it illuminates every facet of ...

    JavaEE源代码 Example_Struts

    JavaEE源代码 Example_StrutsJavaEE源代码 Example_StrutsJavaEE源代码 Example_StrutsJavaEE源代码 Example_StrutsJavaEE源代码 Example_StrutsJavaEE源代码 Example_StrutsJavaEE源代码 Example_StrutsJavaEE源...

    pv example simulink

    pv example for studing。光伏发电系统的并网,扰动法

    [pdf]Ext JS 6 By Example

    一本国外牛人写的关于 ExtJS 6 的电子书 [Ext JS 6 By Example]。这份资料在 PACKT上卖 35.99 刀的,讲的很详细,例子也比较简单,容易理解,现我准备利用工作之余翻译这份文档,为自己学习加深理解,也希望能帮助更...

    learning sas by example

    learning sas by example

    VTK示例文件 VTK_Example

    在使用VS编译 VTK 8.2.0 时顺手生成的VTK示例文件,大概有20余个吧,文件夹里已经包含依赖,可正常运行 VTK示例文件 VTK_Example

Global site tag (gtag.js) - Google Analytics