WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。具体说明请查阅相关资料,下面我来演示一种简单的页面与服务器通信的简单样例。

新建个web工程(基于tomcat-7版本(6以下的版本未实现webSocket功能))

引入tomcat/lib目录下的tomcat7-websocket.jar和websocket-api.jar添加到classpath中

新建WebSocketConfig.java如下

本次采用注解方式

import java.util.Set;import javax.websocket.Endpoint;
import javax.websocket.server.ServerApplicationConfig;
import javax.websocket.server.ServerEndpointConfig;public class WebSocketConfig implements ServerApplicationConfig{@Overridepublic Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> scanned) {return null;}@Overridepublic Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {//返回scannedreturn scanned;}
}

编写EchoSocket代码

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;@ServerEndpoint("/zqq/echo")
public class EchoSocket {public EchoSocket() {super();}@OnOpenpublic void open(Session session){System.out.println("id " + session.getId());}@OnMessagepublic void message(Session session,String msg){System.out.println("sessionid " + session.getId() + " : " + msg);}

}

此时编写客户端echo.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'open.jsp' starting page</title><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">-->
<script type="text/javascript">var ws;  //websocket,协议开头为wsvar target = "ws://${pageContext.request.remoteHost}:8080${pageContext.request.contextPath}/zqq/echo";function subOpen() {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.onmessage=function(event){console.info(event.data);console.info(document.getElementById("h1").value);document.getElementById("h1").innerHTML+=event.data+" ";};}function subSend(){var text = document.getElementById("input").value;//alert(text);
        ws.send(text);document.getElementById("input").value="";}
</script>
</head><body><button οnclick="subOpen()">点击开启</button><br/><input id="input"><br/><button οnclick="subSend()">发送</button>
</body>
</html>

此时将程序部署到tomcat上就可以访问了,记得要先打开通道,输入文字就行

第一次写东西,如有错误还请指教,继续学习中。。。。

转载于:https://www.cnblogs.com/zqq1234/p/5236716.html

利用webSocket使网页和服务器通信相关推荐

  1. html5 websocket java 聊天室_如何利用WebSocket实现网页版聊天室

    花了将近一周的时间终于完成了利用WebSocket完成网页版聊天室这个小demo,期间还走过了一段"看似弯曲"的道路,但是我想其实也不算是弯路吧,因为你走过的路必将留下你的足迹.这 ...

  2. Ajax 网页和服务器通信

    术语Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验.在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的"思考时间"同步. ...

  3. 利用Websocket实现网页调用打印功能

    https://blog.csdn.net/janwool/article/details/78540727 康虎云打印不错

  4. websocket网页与客户端通信

    由于工作的一些原因要使用不通过请求来使网页和桌面程序之间相互发送消息,想来想去还是用websocket之前也百度过一些其他的方法但发现有限制系统问题就给抛弃了. websoket利用本地电脑的端口来使 ...

  5. java socket5源码_Java利用TCP协议实现客户端与服务器通信【附通信源码】

    进行TCP协议网络程序的编写,关键在于ServerSocket套接字的熟练使用,TCP通信中所有的信息传输都是依托ServerSocket类的输入输出流进行的. TCP协议概念 先来了解一下TCP协议 ...

  6. 全网疯传!Java利用TCP协议实现客户端与服务器通信【附通信源码

    目录 TCP协议概念 ServerSocket类 服务器端程序 客户端程序 Hello!大家好哇!我是灰小猿! 上一篇博客和大家分享了在网络编程中要注意的基础知识,关于IP.TCP.UDP以及端口和套 ...

  7. Websocket(二)-客户端与服务器通信

    Websocket(二)-客户端与服务器通信 服务端 客户端测试 const WebSocket = require('ws'); const Server = WebSocket.Server; c ...

  8. 有人串口转wifi模块 httpd client通信示例-用户使用网页通过服务器收发串口数据源码 小黄人软件

    有人串口转wifi模块 httpd client通信示例-用户使用网页通过服务器收发串口数据 功能:用户使用网页通过服务器收发串口数据,转发信息通过文件转存.网页自动更新串口发来的数据,网页发送数据到 ...

  9. java websocket 实现_JAVA (Tomcat服务器)使用WebSocket实现服务端与HTML前端通信

    在一个项目中要使用WebSocket技术来实现服务器与浏览器实时通信交互,在网上也找了许多资料.为了防止以后忘记具体的使用过程,下面我把自己的使用过程和方法记录下来方便自己以后使用. 项目背景: 基于 ...

最新文章

  1. 2014/3/16 长沙多校(第三次)
  2. c#调用带有自定义表结构的存储过程
  3. 基于hsv的亮度调整算法_基于手绘工程图离线识别的预处理研究精品论文推荐
  4. 按照linux文件出现的时间来删除文件
  5. FIREDAC连接SQLITE乱码的解决
  6. 【Oracle】修改参数的同时添加注释
  7. R|ggplot2(七)|自定义主题
  8. dell r620 升级idrac_DELL R630 如何利用IDRAC升级BIOS固件和IDARC
  9. Maven安装配置及在idea中配置
  10. java中根据秒生成cron表达式_在线Cron表达式生成器
  11. 【Servlet:Java Web服务器】JSP 基本知识点与总结 (思维导图)
  12. 计算机毕设(附源码)JAVA-SSM基于Yigo平台库房管理系统
  13. 认证系统之 devise 简单入门教程 (三)
  14. Java 编写捕鱼达人游戏 窗体程序 完整源码
  15. oracle会计 英文,求助,关于cost management 的英文资料+翻译
  16. 怎样防止租用服务器数据丢失问题
  17. Linux Zram配置使用(特定平台个人使用,maybe不具普适性)
  18. OpenVAS破绽扫描根底教程之OpenVAS概述及安装及配置OpenVAS服务
  19. 1063 计算谱半径 (20分)
  20. Firebug的简介

热门文章

  1. ArcGIS_系列中文教程下载
  2. Python学习教程(Python学习路线):Python面试100题(二)
  3. 从分散到整合飞塔中国区商业战略的新方向
  4. [转] asp.net core Introducing View Components
  5. golang学习笔记————字符串
  6. Exchange Server 2003多服务器安装以及管理工具介绍
  7. GDI 泄漏检测方法
  8. mybatis使用foreach进行批量保存
  9. 春运背后默默守护高铁安全的“隐形人”
  10. 关于Kotlin语法的异议