标签: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
标签:web socket java 消息 tomcat
原文地址:http://aku28907.blog.51cto.com/5668513/1786772