java websocket实现单向推送
时间: 2023-11-22 07:49:34 浏览: 192
websocket推送
以下是Java WebSocket实现单向推送的示例代码:
```java
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/push")
public class PushServer {
private static CopyOnWriteArraySet<Session> sessions = new CopyOnWriteArraySet<Session>();
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
@OnError
public void onError(Session session, Throwable error) {
error.printStackTrace();
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
// 单向推送消息给所有客户端
for (Session s : sessions) {
if (s.isOpen()) {
s.getBasicRemote().sendText(message);
}
}
}
}
```
在上面的代码中,我们使用了`@ServerEndpoint`注解来标识这是一个WebSocket服务器端点,客户端可以通过`ws://localhost:8080/push`来连接到这个端点。在`onOpen`方法中,我们将新连接的`Session`对象添加到一个线程安全的`CopyOnWriteArraySet`集合中。在`onClose`方法中,我们将关闭的`Session`对象从集合中移除。在`onError`方法中,我们打印出错误信息。在`onMessage`方法中,我们遍历所有的`Session`对象,将消息单向推送给所有客户端。
阅读全文