我正在使用PHP和WebSocket(JavaScript)在客户端和服务器之间进行通信。过程是: - 服务器启动套接字,客户端连接到。 - 当服务器有新数据时,它会通知所有客户端。 - 然后客户端反馈收到通知,服务器接收此信息,不再发送该信息。如果客户端在10秒后没有响应,则将再次发送服务器。
案例服务器一次发送给客户端服务器很多消息,客户端应答服务器不断服务器无法读取数据。 或者当许多客户端同时回复时,服务器既不能读取数据。Sever使用'socket_recv'函数从客户端接收数据。 问题是如何在服务器中获取消息。
详细代码:
// Create socket and start listen
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket, 0, 1155);
socket_listen($socket);
while (true) {
// Check for new data and sent to all clients
..........
..........
// End of test data and sent
// Check if there are new data from the client
$changed = $clients;
socket_select($changed, $ null, $ null, 0, 10);
// Run through the client
foreach ($changed as $changed_socket) {
// Read the information sent to the client
while (socket_recv($changed_socket, $buf, 1024, 0)> = 1)
{
// Use of client information check up and remove the message was the reply of the client
}
}
sleep (1);
}