WebSocket简单使用
WebSocket
碎語
最近幾日對websocket研究了一下,我就介紹一下服務端基于java的websocket的基本用法吧。至于websocket是什么的,基本原理我就不廢話了,百度的介紹很詳細。
正題
客戶端(瀏覽器)
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);}上面是創建websocket的js代碼,首先建立一個WebSocket對象,在建立的過程中指定的url是服務端用來處理這個 連接的程序。當該socket順利打開后會在控制臺輸出"socket is open"這句話并向服務端發送一句話"i am Tanghulu",并且每當socket收到信息后會把信息輸出到控制臺,當連接發生異常的時候同樣會將錯誤信息輸出到控制臺。
服務端
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());}}這段服務端代碼,和上面js代碼基本差不多,都是在某一事件發生后將信息打印到控制臺,服務端程序在收到消息的時候會將消息打印出來,并且返回一個字符串,這個字符串客戶端會收到。
需要注意的是類的開始的標注中有個value="/websocket",這個指定了客戶端如何定位這個服務端程序。(ws://localhost:8080/websocket),該程序需要websocket-api.jar 這個包,網上有很多資源。
關于部署
只需要將該程序直接放在你的web項目中即可,web容器會自動加載它的。
更多功能
以上介紹的是websocket如何傳送字符串信息,websocket當然還可以傳送二進制數據流,websocket可以直接send一個js的Blob對象或者是ArrayBuffer對象。當然在服務端接收時代碼稍有變化
@OnMessagepublic String onMessage(InputStream ips,Session session){//to do code ...}//或者下面的方法也可以用來接受二進制信息@OnMessagepublic String onBinaryMessage(byte[] byteMessage,Session session){//to do code ...}當發送的是Blob對象的時候服務器會自動調用該方法,當然如果你定義了兩個OnMessage事件方法,方法名字要不一樣了!
總結
以上是生活随笔為你收集整理的WebSocket简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 测试get请求_11-Ce
- 下一篇: 教师点名系统