使用tomcat方式實(shí)現(xiàn)websocket即時(shí)通訊服務(wù)端講解
成都創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營(yíng)銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營(yíng)銷需求!成都創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)項(xiàng)目的能力。經(jīng)過10余年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。第一種方案:使用Tomcat的方式實(shí)現(xiàn)
tomcat版本要求:tomcat7.0+。需要支持Javaee7
導(dǎo)入javeee-api的jar(如果已經(jīng)引入可以忽略):
pom.xml中加入:
一:幾個(gè)重要的注解(方法):
1.1:@ServerEndpoin():
聲明這是一個(gè)websocket服務(wù);
需要指定訪問該服務(wù)的地址。
在地址中可以指定參數(shù),需要使用{}進(jìn)行占位。
注解使用位置:類上面
示例:
@ServerEndpoin("/websocket/{userId}")
public class myTest(){
}
1.2:@OnOpen:
該方法將在建立連接后執(zhí)行,會(huì)傳入session對(duì)象;
可以通過@PathParam來獲取url聲明中參數(shù)
注解使用位置:方法中
用法示例:
public void onOpen(Session session,@PathParam("userId") Integer userId) throws IOExcepthon{}
1.3:@OnClose:
該方法是在連接關(guān)閉后執(zhí)行的
注解位置:方法上
使用示例:
public void onClose(){}
1.4:@OnMessage:
該方法用于接收客戶端發(fā)來的消息
參數(shù):
message:發(fā)來的消息數(shù)據(jù)
session:會(huì)話對(duì)象(也即是通道)
注解位置:方法
示例用法:
public void onMessage(String message,Session session) throws IOException{}
1.5:@OnError:
出錯(cuò)的時(shí)候訪問的。
注解位置:方法上
使用示例:
public void onError(Session session,Throwable error){}
1.6:給客戶端返回消息(或是給客戶端發(fā)送消息):
使用session對(duì)象的getBasinRemoter().sendTest()方法
用法示例:
session.getBasicRemoter().sendText("您發(fā)送的消息已經(jīng)收到了");
二:根據(jù)上面幾個(gè)重要方法,編寫客戶端代碼:
@OnOpen
public void onOpen(Session session, @PathParam("userName") String userName) throws IOException {
log.info("=== 打開連接了===");
session.getBasicRemote().sendText("歡迎:"+userName+"訪問系統(tǒng)");
}
@OnMessage
public void onMessage(String message,Session session, @PathParam("userName") String userName) throws IOException {
log.info("==接收到客戶端發(fā)來的消息是:{}",message);
session.getBasicRemote().sendText("您好:"+userName+" 您發(fā)送的消息"+message+",系統(tǒng)已經(jīng)收到....");
}
訪問效果:
說明:websocket訪問的協(xié)議是ws://而非http://
上圖中:橙色的是我發(fā)送的,下面對(duì)應(yīng)的就是系統(tǒng)返回的。
查看服務(wù)器日志打?。?/p>
我們可以看到,通信已經(jīng)建立了。代碼已經(jīng)放在git上了。歡迎大家一起學(xué)習(xí)。
下節(jié)預(yù)告:下節(jié)我們將使用spring框架來整合websocket的
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。