WebSocket实例详解

2016-06-22|来源:

引用 WebSocket相关的jar包,由于本教程是使用maven集成的tomcat,而不是直接下载tomcat,所以要在pom.xml添加WebSocket的相关依赖。分别是javax.websocket-api和javaee-api

完整pom.xml文件如下


<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/maven-v4_0_0.xsd">
 
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.656463</groupId>
    <artifactId>demo-websocket</artifactId>
    <packaging>war</packaging>
    <name>demo-websocket Maven Webapp</name>
    <version>0.0.1-SNAPSHOT</version>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javax.websocket</groupId>
            <artifactId>javax.websocket-api</artifactId>
            <version>1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>demo-websocket</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>


本示例的业务流程是客户端发起连接请求,然后服务端对其进行响应,就这么一个简单的流程来了解WebSocket的整个流程


WebSocket客户端实现

1、初始化 WebSocket对象,通过 new WebSocket(target)或 new MozWebSocket(target)实例化
2、通过 WebSocket的onopen方法建立连接
3、通过WebSocket的 onmessage方法接收服务端返回的数据

完整代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<meta name="keywords" content="" />
<meta name="description" content="" />
    <script type="text/javascript">
        function  ws_init(){
            var target="ws://192.168.56.101:8080/echoSocket";
            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(){
                console.info("webSocket通道建立成功!!!");
                ws.send("你好!");
            };
            ws.onmessage=function(event){
                console.info(event.data);
            }
        }
    </script>
</head>
<body>
    <button  onclick="ws_init();" >建立连接</button>
</body>
</html>


WebSocket服务端实现
ServerApplicationConfig : 项目启动时会自动启动,类似与ContextListener。 是webSocket的核心配置类。
创建 WebSocketConfig实现ServerApplicationConfig接口,注册WebSocket
package com._656463.demo.websocket;
import javax.websocket.Endpoint;
import javax.websocket.server.ServerApplicationConfig;
import javax.websocket.server.ServerEndpointConfig;
import java.util.Set;
public class WebSocketConfig implements ServerApplicationConfig {
    /**
     * 使用注解的方式注册webSocket,此方式更加的传统,严谨
     *
     * @param set
     * @return
     */
    @Override
    public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> set) {
        return null;
    }
    /**
     * 使用注解的方式注册webSocket,此方式更加灵活简单
     *
     * @param set
     * @return
     */
    @Override
    public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> set) {
        System.out.println("正在扫描所有的webSocket服务!!!");
        return set;
    }
}


创建 EchoSocket类,并在此类上加上ServerEndpoint注解 @ServerEndpoint,注解的值为WebSocket的请求路径。
此类的方法通过注解来实现整个WebSocket的执行流程:
@OnOpen:建立连接的时候,会请求此方法
@OnMessage:接收和响应数据
@OnClose:连接关闭的时候会响应此方法。


完整示例:

package com._656463.demo.websocket;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
@ServerEndpoint("/echoSocket")
public class EchoSocket {
    /**
     * 通道建立时,执行的响应方法。
     *
     * @param session
     */
    @OnOpen
    public void open(Session session) {
        // session 代表一次 socket连接。  可以接收数据, 也可以返回数据。
        System.out.println("连接建立成功,sessionId=" + session.getId());
    }
    /**
     * 接收数据和返回数据
     * @param session
     * @param msg
     */
    @OnMessage
    public  void message(Session session, String msg){
        System.out.println(msg);
        try {
            session.getBasicRemote().sendText("你也好。。。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 关闭
     * @param session
     */
    @OnClose
    public void  close(Session  session){
        System.out.println("session 关闭,sessionId="+session.getId());
    }
}


请求http://192.168.56.101:8080/echo.jsp,即可访问


书生整理于网络


相关问答

更多

ANSYS9.0经典产品基础教程与实例详解 PDF下载

ANSYS9.0经典产品 基础教程与实例详解 相机照的不是很清楚,见谅! 注册一个用户就能下载了

ANSYS9.0经典产品基础教程与实例详解 PDF下载

ANSYS9.0经典产品基础教程与实例详解 相机照的不是很清楚,见谅! 注册一个用户就能下载了

node.js操作MongoDB的实例详解

node.js操作MongoDB时,需要安装mongodb包 1、使用npm安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 2、使用cnpm安装mongodb包 cnpm install mongodb node.js操作MongoDB时的四种方式:插入数据、更新数据、删除数据、查找数据。 操作步骤 步骤1 创建执行文件xx.js 步骤2 终端调用执行文件 node xx.js 注意: 操作前需要启动服务器 ...

《j2ee经典实例详解》在哪可以买到?

J2EE 经典实例详解》[PDG] 软件大小 55.3 MB 软件类型 教程 运行环境 Win9X/Win2000/WinXP/Win2003/ 软件语言 简体中文 Java技术采用了两个象征性的符号,一个是一杯冒着热气的咖啡,一个是Duke这个有趣的卡通人物。Duke在线银行实例是美国Sun Microsystems公司在其《J2EE学习指南》中使用的一个完整实例,该实例涵盖了Java的最主要的核心技术,其规模大小适中。 本书紧紧围绕Duke应用实例,进行了由远及近的全面介绍和自底向上的层层分析 ...

java websocket如何下载

我有WEBSOCKET所需包,直接复制到web_inf下面的lib里就好了。 或者你将TOMCAT自带的websocket包导入。 1. 右击项目,点击build path 2. 点击configure build path---java build path---add library----server runtime----apache tomcat v(版本号) 就把TOMCAT的包加入项目里了,主要是用他的websocket-api.jar包。 直接写代码就行了

专题教程

JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
快速入门
Gson教程
快速了解 jdk8 新特征

相关文章

更多

最近更新

更多