环境: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*/@Overridepublic Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scan) {// TODO Auto-generated method stubreturn scan;}/*** 接口方式启动*/@Overridepublic Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> arg0) {// TODO Auto-generated method stubreturn 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 @OnOpenpublic 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();}}} @OnMessagepublic void messgae(Session session,String msg){System.out.println("消息内容:"+msg);broadcast(this.sessions,msg)//广播 }@OnClosepublic void close(Session session){} }