java websocket原理_Java WebSocket基本原理

WebSocket协议介绍

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

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

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

org.apache.tomcat

tomcat-websocket-api

7.0.47

provided

javax

javaee-api

7.0

provided

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

服务端代码:EchoServer.javapackage 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.htmlvar 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("ERROR:" + 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);

html>

发送消息页面

Echo Server

运行结果:

4d82de7cad80a32a12e3c4f0673e0bfa.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值