Ich versuche, eventmachine und haben einen einfachen Server:Schlaf mit eventmachine
require 'eventmachine'
module Handler
def receive_data(data)
send_data "#{Time.now}: Received data: #{data}"
sleep 3
send_data "#{Time.now}: Message after 3 seconds\r\n"
end
end
EventMachine.run do
EventMachine.start_server('0.0.0.0', 1234, Handler)
end
Wenn ich den Server und eine Verbindung zu ihm über Telnet betreibe ich habe folgendes:
[email protected]:/# telnet localhost 1234
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello world
2017-12-13 05:35:26 +0000: Received data: hello world
2017-12-13 05:35:29 +0000: Message after 3 seconds
Es scheint in Ordnung aber es verhält sich auf unerwartete Weise. Wenn ich hello world
an den Server sende, erwarte ich, dass ich Received data: hello world
Nachricht praktisch gleichzeitig zurückbekomme und nach 3 Sekunden erwarte ich Message after 3 seconds
Nachricht. Aber jetzt, nachdem ich zuerst einen Befehl an den Server gesendet habe, bekomme ich nichts zurück und nach 3 Sekunden bekomme ich zwei Nachrichten zusammen.
Wie kann ich gewünschte Weise erreichen?
Können Sie 'puts' anstelle von' send_data' anrufen? –
Natürlich kann ich, aber es wird nur die Zeile auf der Serverseite drucken. Aber ich möchte diese Nachricht sofort auf der Client-Seite bekommen und nach 3 Sekunden bekomme ich auch die zweite Nachricht auf dem Client. – user3309314