java多线程websocket
时间: 2023-08-31 16:09:29 浏览: 235
Java中实现WebSocket多线程可以通过使用Java WebSocket API来实现。以下是一个简单的示例:
```java
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.websocket.CloseReason;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket")
public class WebSocketServer extends Endpoint {
private ScheduledExecutorService executorService = Executors.newScheduledThreadPool(10);
@Override
public void onOpen(Session session, EndpointConfig config) {
session.addMessageHandler(new MessageHandler.Whole<ByteBuffer>() {
@Override
public void onMessage(ByteBuffer message) {
// 处理消息
}
});
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
try {
session.getBasicRemote().sendText("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
}
}, 0, 1, TimeUnit.SECONDS);
}
@Override
public void onClose(Session session, CloseReason closeReason) {
executorService.shutdown();
}
}
```
在上面的示例中,我们使用了Java WebSocket API中的`@ServerEndpoint`注解来定义一个WebSocket服务器端点,`Endpoint`类提供了一个回调方法,可以在WebSocket连接建立时处理请求。我们在`onOpen`方法中注册了一个`MessageHandler`来处理来自客户端的消息,并使用`ScheduledExecutorService`定时向客户端发送消息。在连接关闭时,我们关闭了`ScheduledExecutorService`。
阅读全文