環境:jdk.18 tomcat-7.0.70
把tomcat中的
兩個jir包復制到
注意:最后部署的時候要刪除掉這兩個jar包 tomcate中已經有了
ebSocket對象的創建和服務器連接
要連接通信端點,只需要創建一個新的WebSocket實例,並提供希望連接的對端URL。
ws://和wss://前綴分別表示WebSocket連接和安全的WebSocket連接。
url = "ws://localhost:8080/echo";
w = new WebSocket(url);
建立WebSocket連接時,可以列出Web應用能夠使用的協議
var ws; window.onload=function(){ ws = new WebSocket("ws://192.168.32.132:8080/CaiNiaoTV/websocket"); ws.onopen=function(){ }; } document.onkeydown=function(event){ var e = event || window.event || arguments.callee.caller.arguments[0]; if (e && e.keyCode == 13) { sendMsg(); } }; function sendMsg(){ /* * ws.onopen = function() { }; */ var txt = "xxx"; /** * 發送消息 */ if(txt.length>0){ ws.send(txt); }else{ alert("請輸入文字"); } /** * 接收返回的消息 */ ws.onmessage = function (evt) { var received_msg = evt.data; console.log(received_msg); }; /** * 關閉連接 */ ws.onclose = function() { }; }
后台:
package com.cainiao.tv.servlet; import java.util.Set; import javax.websocket.Endpoint; import javax.websocket.server.ServerApplicationConfig; import javax.websocket.server.ServerEndpointConfig; /** * websocket * @author Administrator * */ public class TalkSocket implements ServerApplicationConfig { /** * 注解的方式啟動 * 自動掃描本地的websocket * @return scan是websocket */ @Override public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scan) { // TODO Auto-generated method stub return scan; } /** * 接口方式啟動 */ @Override public Set<ServerEndpointConfig> getEndpointConfigs( Set<Class<? extends Endpoint>> arg0) { // TODO Auto-generated method stub return null; } }
import java.io.IOException; import java.util.List; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import com.cainiao.tv.entity.Talk; import com.cainiao.tv.entity.User_Tv; @ServerEndpoint("/websocket") public class TalkWebSocketServer { private static List<Session> sessions = new @OnOpen public void open(Session session){ sessions.add(session); } public void broadcast(List<Session> sessions,String msg){ for(Iterator iter = sessions.iterator();iter.hasNext();){ Session session = (Session) iter.next(); try { session.getBasicRemote().sendText(msg); } catch (IOException e) { e.printStackTrace(); } } } @OnMessage public void messgae(Session session,String msg){ System.out.println("消息內容:"+msg); broadcast(this.sessions,msg)//廣播 } @OnClose public void close(Session session){ } }