码迷,mamicode.com
首页 > 编程语言 > 详细

Java WebSocket基本原理

时间:2016-06-07 06:42:07      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:web socket   java   消息   tomcat   

WebSocket协议介绍

    WebSocket协议是一个网络协议,允许两个相连的端在一个单一TCP连接上进行全双工消息通信。

    在WebSocket的场景中,连接通过HTTP和WebSocket端点交互的方式建立。连接的一方发送一个专门定制的HTTP请求,启动包含其希望连接的WebSocket的URL。它开始活动并被称为打开阶段握手。如果服务器愿意接受连接,服务器制定一个称为打开阶段握手响应的特殊的HTTP响应并将其发送会客户端。此时TCP连接已经建立,能够保证WebSocket消息的往返传递。连接一直保持直到任意一方终止连接,或者某些外部因素导致连接关闭。

    Java Web Socket API是最近JavaEE7平台的核心特性,因此不是用tomcat部署的用户要注意依赖一下两个包

<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-websocket-api</artifactId>
<version>7.0.47</version>
<scope>provided</scope>
</dependency>


<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>

    创建第一个WebSocket应用,部署在Tomcat7及以上版本

    服务端代码:EchoServer.java

package org.mychat.websocket.server;
import javax.websocket.OnMessage;
import javax.websocket.server.ServerEndpoint;
/**
 * @author 陈胜
 * 注解@ServerEndpoint是类级别注解,
 * 用于告诉java平台它注解的类实际上要称为一个WebSocket端点
 */
@ServerEndpoint("/mychat.ws")
public class EchoServer {
 @OnMessage
 public String echo(String incomingMessage){
  System.out.println("接收到的消息: " + incomingMessage);
  return "I got this (" + incomingMessage + "),so I am sending it back";
 }
}

    客户端代码websocket_client.js + index.html

var echo_websocket;
function init(){
 output = document.getElementById("output");
}
function send_echo(){
 var wsUri = "ws://127.0.0.1:8080/mychat/mychat.ws";
 writeToScreen("Connecting to "+wsUri);
 echo_websocket = new WebSocket(wsUri);
 echo_websocket.onopen = function(evt){
  writeToScreen("Connected");
  doSend(document.getElementById("textID").value);
 };
 echo_websocket.onmessage = function(evt){
  writeToScreen("Received message: "+evt.data);
  echo_websocket.close();
 };
 echo_websocket.onerror = function(evt){
  writeToScreen("<span style=‘color:red;‘>ERROR:</span>" + evt.data);
  echo_websocket.close();
 };
}
function doSend(message){
 echo_websocket.send(message);
 writeToScreen("Send message: " + message);
}
function writeToScreen(message){
// console.log("接收到的Message:"+message);
 var pre = document.createElement("p");
 pre.style.wordWrap = "bread-word";
 pre.innerHTML = message;
 output.appendChild(pre);
}
window.addEventListener("load", init, false);

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>发送消息页面</title>
<script type="text/javascript" src="js/websocket_client.js"></script>
</head>
<body>
 <h1>Echo Server</h1>
 <div style="text-align: left;">
  <form action="">
   <input onclick="send_echo()" value="Press to send" type="button"/>
   <input id="textID" name="message" value="Hello Web Sockets" type="text"/>
  </form>
 </div>
 
 <div id="output"></div>
</body>
</html>

运行结果:

技术分享

虽然很简单,但是,我们已经与websocket已经有了亲密的接触。

本文出自 “阿酷博客源” 博客,请务必保留此出处http://aku28907.blog.51cto.com/5668513/1786772

Java WebSocket基本原理

标签:web socket   java   消息   tomcat   

原文地址:http://aku28907.blog.51cto.com/5668513/1786772

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!