while (true) {
String message = scanner.nextLine();
session.getBasicRemote().sendText(message);
}
} catch (DeploymentException | IOException e) {
e.printStackTrace();
}
}
}
以上代码使用Java的WebSocket API实现了一个简单的实时聊天室。服务器端使用`@ServerEndpoint`注解标记一个WebSocket端点,并实现了相应的事件处理方法。客户端使用`@ClientEndpoint`注解标记一个WebSocket客户端,并实现了相应的事件处理方法。
服务器端使用`broadcast`方法将接收到的消息广播给所有连接的客户端。客户端可以通过`session.getBasicRemote().sendText(message)`方法向服务器发送消息,并通过`@OnMessage`注解接收服务器发送的消息。
在实际应用中,可以根据需要修改和扩展这些代码,添加认证、消息过滤等功能,以满足实际的业务需求。
场景2:在线多人游戏
在在线多人游戏中,多个玩家需要通过服务器进行实时的游戏交互,包括角色移动、攻击等操作。服务器需要接收并处理玩家的操作,并将操作结果广播给其他玩家。
服务器端代码示例(使用Java的Socket编程):
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class GameServer {
private static final int PORT = 8888;
private List players;
public GameServer() {
players = new ArrayList<>();
}
public void start() {
try {
ServerSocket serverSocket = new ServerSocket(PORT);
System.out.println("服务器已启动,等待玩家连接...");
while (true) {
Socket playerSocket = serverSocket.accept();
players.add(playerSocket);
System.out.println("玩家已连接");
Thread playerThread = new Thread(new PlayerThread(playerSocket));
playerThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private class PlayerThread implements Runnable {
private Socket playerSocket;
public PlayerThread(Socket playerSocket) {
this.playerSocket = playerSocket;
}
@Override
public void run() {
try {
InputStream is = playerSocket.getInputStream();
OutputStream os = playerSocket.getOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) != -1) {
String message = new String(buffer, 0, length);
System.out.println("接收到玩家消息:" + message);
// 处理玩家消息