实现WebSocket对象的web浏览器通过WebSocket对象公开所有必需的客户端功能。
创建WebSocket对象
var ws = new WebSocket(url); //url格式:ws://ip地址:端口号/资源名称(2)webSocket事件
webSocket相关的事件,浏览器与服务器建立连接、如何接收服务器消息、如何向服务器发送消息(这个使用的是webSocket对象中的方法)等事件描述。
前提:Tomcat 7.0.5版本后才开始支持WebSocket。
Java WebSocket应用由一系列的WebSocketEndpoint组成。
Endpoint是Java中的一个对象,代表WebSocket链接的一端(每一个客户端需要创建一个Endpoint对象)
对于服务器端,Endpoint对象可以看作是处理WebSocket消息的接口。===类似Servlet与HTTP请求中的Servlet
两种方式定义Endpoint对象。
- 编程式,通过代码编程,继承类Javax.websocket.Endpoint并实现其方法;
- 注解式,通过定义一个POJO类,并使用**@ServerEndpoint**相关注解。
Endpoint对象实例在WebSocket握手时创建,并在客户端与服务端链接过程中有效,最后在链接关闭时结束。
在Endpoint接口中明确定义了与生命周期相关的方法。
通过为Session添加MessageHandler消息处理器来接收消息。
当采用注解方式定义Endpoint时,可以使用**@OnMessage**注解指定接收消息的方法。
服务器向客户端发送消息由RemoteEndpoint完成,其实例由Session维护,根据使用情况,可以通过Session.getBasicRemote获取同步消息发送的实例,然后调用sendXxx()方法就可以发送消息。可以通过Session.getAsyncRemote获取异步消息发送实例。
简易聊天室服务端代码实例:
import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.HashSet; import java.util.Set; @ServerEndpoint("robin") public class chatEndPoint { private static SetwebSocketSet = new HashSet (); private Session session; @onMessage public void onMessage(String message,Session session) throws IOException { System.out.println("接收的消息是:"+message); System.out.println(session); //将消息发送给其他的用户 for(chatEndPoint chat:webSocketSet){ if (chat != this){ chat.session.getBasicRemote().sendText(message); } } } @onOpen public void onOpen(Session session){ this.session = session; webSocketSet.add(this); } @onClose public void onClose(Session session){ System.out.println("连接关闭了...."); } @onError public void onError(Session session,Throwable error){ System.out.println("出错了...."+error.getMessage()); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)