java websocket代码实现
时间: 2023-07-24 13:18:03 浏览: 129
下面是一个简单的Java WebSocket代码实现示例:
```java
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
@ServerEndpoint("/websocket")
public class WebSocketServer {
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket opened: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
System.out.println("Received message: " + message);
// 处理接收到的消息,例如广播给所有连接的客户端
for (Session client : session.getOpenSessions()) {
client.getBasicRemote().sendText("Server: " + message);
}
}
@OnClose
public void onClose(Session session) {
System.out.println("WebSocket closed: " + session.getId());
}
@OnError
public void onError(Session session, Throwable error) {
System.out.println("WebSocket error: " + error.getMessage());
}
}
```
以上代码使用了Java的WebSocket API,通过`@ServerEndpoint`注解定义了一个WebSocket端点,指定了对应的URI路径为`/websocket`。在`@OnOpen`、`@OnMessage`、`@OnClose`和`@OnError`注解的方法中,可以编写相应的逻辑来处理WebSocket的连接、消息、关闭和错误事件。
要在Java应用程序中启动WebSocket服务器,可以使用以下代码:
```java
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;
public class Main {
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
WebSocketServerContainerInitializer.configure(context, (servletContext, container) -> {
container.addEndpoint(WebSocketServer.class);
});
server.start();
server.join();
}
}
```
以上代码使用了Jetty服务器来启动WebSocket服务器,并将WebSocket端点注册到服务器上。
可以通过访问`ws://localhost:8080/websocket`来连接到该WebSocket服务器。你可以根据自己的需求进行修改和扩展。
阅读全文