WebSocket.之.基础入门-建立连接

1. 使用开发工具(STS、Eclipse等)创建web项目。如下图所示,啥东西都没有。一个新的web项目。

2. 创建java类、index.jsp页面。注意:web.xml未做任何改动.

TestConfig.java 代码如下:

  1. package com.charles.socket;
  2.  
  3. import java.util.Set;
  4.  
  5. import javax.websocket.Endpoint;
  6. import javax.websocket.server.ServerApplicationConfig;
  7. import javax.websocket.server.ServerEndpointConfig;
  8.  
  9. public class TestConfig implements ServerApplicationConfig{
  10.  
  11. // 这个方法是使用注解进行开发
  12. @Override
  13. public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> arg0) {
  14. // TODO 我们使用注解进行开发,简单。
  15.  
  16. // 这个方法中可以进行过滤筛选Socket,但我们现在什么都不操作,直接返回arg0 ,21行:return arg0
  17. System.out.println("*******************************************");
  18. System.out.println("WebSocket初始的个数:" + arg0.size());
  19. System.out.println("*******************************************");
  20.  
  21. return arg0;
  22. }
  23.  
  24. // 这个方法是使用配置文件进行开发
  25. @Override
  26. public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> arg0) {
  27. // TODO Auto-generated method stub
  28. return null;
  29. }
  30. }

TestSocket.java 代码

  1. package com.charles.socket;
  2.  
  3. import javax.websocket.OnOpen;
  4. import javax.websocket.Session;
  5. import javax.websocket.server.ServerEndpoint;
  6.  
  7. @ServerEndpoint(value = "/helloSocket")
  8. public class TestSocket {
  9.  
  10. /***
  11. * 当建立链接时,调用的方法.
  12. * @param session
  13. */
  14. @OnOpen
  15. public void open(Session session) {
  16.  
  17. System.out.println("开始建立了链接...");
  18. System.out.println("当前session的id是:" + session.getId());
  19. }
  20. }

index.jsp 代码

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>Charles-WebSocket</title>
  7.  
  8. <script type="text/javascript">
  9.  
  10. var websocket = null;
  11. var target = "ws://localhost:8080/websocket/helloSocket";
  12.  
  13. function buildConnection() {
  14.  
  15. if('WebSocket' in window) {
  16. websocket = new WebSocket(target);
  17. } else if('MozWebSocket' in window) {
  18. websocket = MozWebSocket(target);
  19. } else {
  20. window.alert("浏览器不支持WebSocket");
  21. }
  22. }
  23.  
  24. </script>
  25. </head>
  26. <body>
  27.  
  28. <button onclick="buildConnection();">开始建立链接</button>
  29.  
  30. </body>
  31. </html>

将项目部署在Tomcat中进行运行,注意:Tomcat版本需要在7.x 以上。

由于项目中只写了一个 WebSocket(TestSocket.java),所以在启动的日志中,你能看到统计的socket仅有一个。

访问浏览器:http://localhost:8080/websocket

在页面上点击按钮:开始建立链接,看后台日志。如下图所示,有后台日志打印出来,说明前端和后端,建立连接成功。

如有问题,欢迎纠正!!!

如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9784349.html

WebSocket.之.基础入门-建立连接的更多相关文章

  1. WebSocket.之.基础入门-断开连接处理

    ebSocket.之.基础入门-断开连接处理 在<WebSocket.之.基础入门-后端响应消息>的代码基础之上,继续更新代码.代码只改动了:TestSocket.java 和 index ...

  2. WebSocket.之.基础入门-前端发送消息

    WebSocket.之.基础入门-前端发送消息 在<WebSocket.之.基础入门-建立连接>的代码基础之上,进行添加代码.代码只改动了:TestSocket.java 和 index. ...

  3. WebSocket.之.基础入门-后端响应消息

    WebSocket.之.基础入门-后端响应消息 在<WebSocket.之.基础入门-前端发送消息>的代码基础之上,进行添加代码.代码只改动了:TestSocket.java 和 inde ...

  4. Arduino基础入门—3.连接 IIC 1602 LCD显示文字

    1. IIC转接板介绍 Arduino Uno R3开发板的外部IO口是非常有限的.在驱动LCD1602时,尽管我们的数据线使用了4线,相对于8线方式减少一半,但是在需要外接多种传感器的应用中,4线驱 ...

  5. websocket是如何进行建立连接与通信的?(简单理解)

    握手过程: websocket-client端通过ws协议向websocket-server端发起连接请求前,首先在自己的请求头中添加Sec-Websocket-Key键值对,值为根据自己账号通过一定 ...

  6. java基础入门-建立能够多client链接的ServerSocket

    承接上一篇文章,今天谈论一下能够多client链接的ServerSocket. 这里面注意涉及到的技术点是: 1.ServerSocket 2.多线程 这次我们分成两个类来实现,先上代码: packa ...

  7. Websocket如何建立连接

    前面提到,WebSocket复用了HTTP的握手通道.具体指的是,客户端通过HTTP请求与WebSocket服务端协商升级协议.协议升级完成后,后续的数据交换则遵照WebSocket的协议. 1.客户 ...

  8. 使用Websocket与服务器建立连接

    handleMessage = () => { const url = '////'; //某url const token = getCookie('xnToken');//向后端发请求得登陆 ...

  9. WebSocket在建立连接时通过@PathParam获取页面传值

    最近用Java下使用WebSocket,有一个需求,在页面与Java后台建立连接的时候获取页面上提供的参数,也就是在@OnOpen注解的方法里面获取一次页面的参数,有一个很简单的方法可以获得.即使用@ ...

随机推荐

  1. Concurrent Execution

    Concurrent Execution — Python 3.7.2 documentation https://docs.python.org/3/library/concurrency.html

  2. Microsoft .NET Framework

    Microsoft .NET Framework是用于Windows的新托管代码编程模型.它将强大的功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且 ...

  3. 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层

    小结: 1. 网络层两种服务 虚电路服务 virtual circuit  电信网 网络层负责可靠交付 数据报服务  网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...

  4. [daily] pandoc

    学了LaTeX之后,你就会很自然的接触的另一种观点: LaTeX是专注于排版的,你需要专注于内容. 于是,请使用pandoc. 简单的说, pandoc就是可以将各种个样格式的文档转换成各种各样格式的 ...

  5. oplog

    参考资料:https://www.cnblogs.com/ruizhang3/p/6539730.html http://www.jb51.net/article/113432.htm :insert ...

  6. jpa持久化对象四种状态

    自己理解,不完全正确,大致如下: 例:某实体类   Person(int id,string name,int age);   id 为主键. 新建:new Person(),  并且未给 id 赋值 ...

  7. centos 安装ss

    yum install python-setuptools && easy_install pip pip install shadowsocks vi /etc/shadowsock ...

  8. input="file" 浏览时只显示指定excel文件,筛选特定文件类型

    <p>显示 .xls, .xlsx, .csv 文件...</p> <input type="file" accept=".csv, app ...

  9. linux进程间通信同步-共享内存

    参考:https://www.cnblogs.com/charlesblc/p/6142868.html 使用有名信号量,sem_open().sem_close().sem_post().sem_w ...

  10. 如何在安装node\npm\cnpm

    1.安装node.js node.js的官方地址为:https://nodejs.org/en/download/. 根据windows版本后,选择要下载的安装包,下载完毕,按照windows一般应用 ...