java开发websocket服务端实现端口直连
时间: 2023-08-17 09:29:52 浏览: 212
要在Java中实现WebSocket服务端,可以使用Java WebSocket API。以下是一个简单的示例:
```java
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.nio.ByteBuffer;
@ServerEndpoint("/myendpoint")
public class MyWebSocketServer {
@OnOpen
public void onOpen(Session session) {
System.out.println("Client connected: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
System.out.println("Received message: " + message);
session.getBasicRemote().sendText("Hello, Client!");
}
@OnMessage
public void onMessage(ByteBuffer buffer, Session session) throws IOException {
System.out.println("Received binary message: " + buffer);
session.getBasicRemote().sendBinary(buffer);
}
@OnClose
public void onClose(Session session) {
System.out.println("Client disconnected: " + session.getId());
}
@OnError
public void onError(Throwable t) {
t.printStackTrace();
}
}
```
在上面的示例中,我们定义了一个 `MyWebSocketServer` 类,并使用 `@ServerEndpoint` 注解将其标记为 WebSocket 服务端端点。我们还定义了四个注解方法,`onOpen()`、`onMessage()`、`onClose()` 和 `onError()`,分别在连接建立、接收到消息、连接关闭和发生错误时被调用。
在 `onMessage()` 方法中,我们使用 `Session` 对象的 `getBasicRemote()` 方法向客户端发送消息。为了支持二进制消息,我们还定义了一个 `onMessage()` 方法,该方法接收 `ByteBuffer` 类型的参数。
在使用上述代码之前,需要确保已经引入 Java WebSocket API 的依赖项。可以使用以下 Maven 依赖项:
```xml
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
```
注意,以上代码仅适用于端口直接连接的 WebSocket。如果需要使用 SSL/TLS 连接,或者需要进行身份验证等操作,需要进行额外的配置。
阅读全文