日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat中实现websocket和browser端访问

發(fā)布時(shí)間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat中实现websocket和browser端访问 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Tomcat中實(shí)現(xiàn)websocket和browser端訪問

簡(jiǎn)介:

在tomcat 7.0.27版本后,實(shí)現(xiàn)了對(duì)websocket的支持。在最新的tomcat7.0.72后,websocket的開發(fā)變動(dòng)更簡(jiǎn)單了 在tomcat中,websocket的支持有2個(gè)jar包提供:websocket-api.jar和tomcat-websocket.jar。

開發(fā)

實(shí)現(xiàn)websocket處理的類,可以繼承javax.websocket.Endpoint;也可以使用注解來進(jìn)行websocket服務(wù)的開發(fā),這樣更簡(jiǎn)單。簡(jiǎn)單一個(gè)chat的示例: package com.wssample;import java.io.IOException; import java.util.*;import javax.websocket.*; import javax.websocket.server.ServerEndpoint;@ServerEndpoint(value = "/chatendpoint") public class ChatEndpoint {//static final Logger logger = Logger.getLogger(ChatEndpoint.class);static Map<String,Session> sessionMap = new Hashtable<String,Session>();@OnOpenpublic void start(Session session){System.out.println("Guest"+session.getId()+" join");sessionMap.put(session.getId(), session);broadcast("Guest" + session.getId() + " join.");}@OnMessagepublic void process(Session session, String message){System.out.println(session.getId()+" say: " + message);broadcast("Guest"+session.getId()+" [say]: "+message);}@OnClosepublic void end(Session session){System.out.println("Guest"+session.getId()+" out.");sessionMap.remove(session.getId());broadcast("Guest"+session.getId()+ " out.");}@OnErrorpublic void error(Session session, java.lang.Throwable throwable){System.err.println("Guest" + session.getId() + " error: " + throwable);end(session);}void broadcast(String message){RemoteEndpoint.Basic remote = null;Set<Map.Entry<String,Session>> set = sessionMap.entrySet();for(Map.Entry<String,Session> i: set){remote = i.getValue().getBasicRemote();try {remote.sendText(message);} catch (IOException e) {e.printStackTrace();}}} }

服務(wù)端開發(fā),使用注解@ServerEndpoint,標(biāo)示一個(gè)websocket服務(wù)端。注解參數(shù)value可以指定訪問的路徑。
在實(shí)現(xiàn)類中,使用注解@OnOpen,@OnClose, @OnMessage,@OnError來標(biāo)示websocket生命周期的4個(gè)處理。

瀏覽器端

在瀏覽器端,使用js訪問websocket訪問,進(jìn)行交互。

<!DOCTYPE html> <html> <head><title>chatendpoint.html</title><script language="JavaScript">var wsuri = "ws://localhost:8080/WebSocket/chatendpoint";var ws = null;function connectEndpoint(){window.WebSocket = window.WebSocket || window.MozWebSocket;if (!window.WebSocket){alert("WebSocket not supported by this browser");return;}ws = new WebSocket(wsuri);ws.onmessage = function(evt) {//alert(evt.data);var old = document.getElementById("echo").value;document.getElementById("echo").value = old+evt.data+"\r\n";};ws.onclose = function(evt) {//alert("close");document.getElementById("echo").value = "server disconnect.\r\n";};ws.onopen = function(evt) {//alert("open");document.getElementById("echo").value = "connect server.\r\n";};}function sendmsg(){ws.send(document.getElementById("send").value);}</script> </head> <body onload="connectEndpoint()"> <input type="text" size="20" value="hi~" id="send"> <input type="button" value="send" onclick="sendmsg()"> <br> <textarea id="echo" rows="50" cols="50"> </textarea> </body> </html> 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Tomcat中实现websocket和browser端访问的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。