WebSocket简单使用
WebSocket
碎語
最近幾日對websocket研究了一下,我就介紹一下服務(wù)端基于java的websocket的基本用法吧。至于websocket是什么的,基本原理我就不廢話了,百度的介紹很詳細(xì)。
正題
客戶端(瀏覽器)
var socket = new WebSocket("ws://localhost:8080/websocket");socket.onopen = function(){socket.send("i am Tanghulu");console.log("socket is open");}socket.onmessage = function(msg){console.log(msg.data);}socket.onerror = function(error){console.log(error);}上面是創(chuàng)建websocket的js代碼,首先建立一個(gè)WebSocket對象,在建立的過程中指定的url是服務(wù)端用來處理這個(gè) 連接的程序。當(dāng)該socket順利打開后會(huì)在控制臺(tái)輸出"socket is open"這句話并向服務(wù)端發(fā)送一句話"i am Tanghulu",并且每當(dāng)socket收到信息后會(huì)把信息輸出到控制臺(tái),當(dāng)連接發(fā)生異常的時(shí)候同樣會(huì)將錯(cuò)誤信息輸出到控制臺(tái)。
服務(wù)端
import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;@ServerEndpoint(value="/websocket")public class WebSocket{@OnOpenpublic void onOpen(Session session){System.out.println("socket is open");}@OnMessagepublic String onMessage(String msg,Session session){System.out.println(msg);return "server is received";}@OnClosepublic void onClose(){System.out.println("close...");}@OnErrorpublic void onError(Throwable error){System.out.println(error.getMessage());}}這段服務(wù)端代碼,和上面js代碼基本差不多,都是在某一事件發(fā)生后將信息打印到控制臺(tái),服務(wù)端程序在收到消息的時(shí)候會(huì)將消息打印出來,并且返回一個(gè)字符串,這個(gè)字符串客戶端會(huì)收到。
需要注意的是類的開始的標(biāo)注中有個(gè)value="/websocket",這個(gè)指定了客戶端如何定位這個(gè)服務(wù)端程序。(ws://localhost:8080/websocket),該程序需要websocket-api.jar 這個(gè)包,網(wǎng)上有很多資源。
關(guān)于部署
只需要將該程序直接放在你的web項(xiàng)目中即可,web容器會(huì)自動(dòng)加載它的。
更多功能
以上介紹的是websocket如何傳送字符串信息,websocket當(dāng)然還可以傳送二進(jìn)制數(shù)據(jù)流,websocket可以直接send一個(gè)js的Blob對象或者是ArrayBuffer對象。當(dāng)然在服務(wù)端接收時(shí)代碼稍有變化
@OnMessagepublic String onMessage(InputStream ips,Session session){//to do code ...}//或者下面的方法也可以用來接受二進(jìn)制信息@OnMessagepublic String onBinaryMessage(byte[] byteMessage,Session session){//to do code ...}當(dāng)發(fā)送的是Blob對象的時(shí)候服務(wù)器會(huì)自動(dòng)調(diào)用該方法,當(dāng)然如果你定義了兩個(gè)OnMessage事件方法,方法名字要不一樣了!
總結(jié)
以上是生活随笔為你收集整理的WebSocket简单使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 测试get请求_11-Ce
- 下一篇: UnicodeDecodeError: