java怎么做websocket
我不知道你想用websocket实现什么样的功能,一般配合HTML5的话websocket可以解决服务端和客户端消息实时传递的问题,如消息推送(webQQ这种)。它的初始连接是http转成websocket连接。
实现的话要做两件事,一端是在服务器实现service,这个有点像tcplistener一样;
另一个是客户端(浏览器)开发,可以用JS实现:
html
head
meta
charset="utf-8"
/
script
type="text/javascript"
var
host
=
'127.0.0.1';
var
port
=
8080;
var
url
=
'ws://'+host+':'+port+'/';
var
w
=
new
WebSocket(url);
//构建于服务器之间的连接通信
!--var
audioElement
=
document.createElement('audio');
--
!--audioElement.setAttribute('src',
'qqmsg.mp3');--
w.onopen
=
function()//通过onopen事件句柄来监听socket的打开事件
{
$('chat-box').innerHTML
=
'已连接到服务器......br/';
}
w.onmessage
=
function(e)//用onmessage事件句柄接受服务器传过来的数据
{
var
msg
=
e.data;
var
chatBox
=
$('chat-box');
//
audioElement.play();
chatBox.innerHTML
=
chatBox.innerHTML+msg+'br/';
}
function
send()//使用send方法向服务器发送数据
{
var
talk
=
$('talk');
var
nike
=
$('nike');
w.send('strong
style="color:red"'+nike.value+':/strong'+talk.value);
}
function
$(id)
{
return
document.getElementById(id);
}
/script
/head
body
div
id="chat-box"
style="border:1px
solid
#cccccc;
width:400px;
height:400px;
overflow:scroll;"/div
昵称:
input
type="text"
id="nike"/
br/
内容:
input
type="text"
id="talk"/
input
type="button"
id="send"
onClick="send();"
value="发送"/
/body
可参考IBM社区
/html
java检查websocket是否开启
可以使用Java的Socket类来检查WebSocket是否开启。
下面是一个示例代码:
try {
Socket socket = new Socket("localhost", 8080);
if (socket.isConnected()) {
System.out.println("WebSocket is open");
} else {
System.out.println("WebSocket is closed");
}
} catch (IOException e) {
e.printStackTrace();
}
java消息推送websocket怎么实现
java消息推送websocket实现原理:在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
在以前的消息推送机制中,用的都是 Ajax 轮询(polling),在特定的时间间隔由浏览器自动发出请求,将服务器的消息主动的拉回来,这种方式是非常消耗资源的,因为本质还是http请求,而且显得非常笨拙。而WebSocket 在浏览器和服务器完成一个握手的动作,在建立连接之后,服务器可以主动传送数据给客户端,客户端也可以随时向服务器发送数据。
WebSocket协议是基于TCP的一种新的网络协议。实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。也可以选择第三方推送平台来实现,比如极光推送就不错。