Tôi gặp vấn đề mà tôi không thể hiểu được.Flash lạ AS3 xml Hành vi ổ cắm
Để hiểu nó tôi đã viết một máy khách socket trên AS3 và một máy chủ trên python/xoắn, bạn có thể thấy mã của cả hai ứng dụng dưới đây.
Hãy khởi chạy hai clients cùng một lúc, sắp xếp chúng để bạn có thể nhìn thấy cả hai cửa sổ và nhấn nút kết nối trong cả hai cửa sổ. Sau đó nhấn và giữ nút bất kỳ.
Những gì tôi đang mong đợi:
khách hàng với nút ép gửi một thông điệp "một số dữ liệu" đến máy chủ, sau đó máy chủ sẽ gửi thông điệp này đến tất cả các khách hàng (kể cả người gửi ban đầu).
Sau đó, mỗi khách hàng di chuyển sang phải nút 'connectButton' và in thông báo vào nhật ký theo thời gian theo định dạng sau: "min: secs: mili giây".
gì đang xảy ra sai:
Các chuyển động được mịn màng trong client gửi đi các tin nhắn, nhưng trong tất cả các khách hàng khác chuyển động là giật.
Điều này xảy ra vì thông báo cho những khách hàng đó đến muộn hơn so với ứng dụng khách gửi ban đầu. Và nếu chúng tôi có ba khách hàng (hãy đặt tên cho họ là A, B, C) và chúng tôi gửi một tin nhắn từ A, nhật ký thời gian gửi của B và C sẽ giống nhau.
Tại sao các khách hàng khác nhận được thông báo này muộn hơn người gửi ban đầu?
Nhân tiện, trên ubuntu 10.04/chrome tất cả chuyển động đều mượt mà. Hai khách hàng được giới thiệu trong các chromes riêng biệt.
Danh bạ nhà log, bốn khách hàng cùng một lúc:
[16:29:33.280858] 62.140.224.1 >> some data
[16:29:33.280912] 87.249.9.98 << some data
[16:29:33.280970] 87.249.9.98 << some data
[16:29:33.281025] 87.249.9.98 << some data
[16:29:33.281079] 62.140.224.1 << some data
[16:29:33.323267] 62.140.224.1 >> some data
[16:29:33.323326] 87.249.9.98 << some data
[16:29:33.323386] 87.249.9.98 << some data
[16:29:33.323440] 87.249.9.98 << some data
[16:29:33.323493] 62.140.224.1 << some data
[16:29:34.123435] 62.140.224.1 >> some data
[16:29:34.123525] 87.249.9.98 << some data
[16:29:34.123593] 87.249.9.98 << some data
[16:29:34.123648] 87.249.9.98 << some data
[16:29:34.123702] 62.140.224.1 << some data
AS3 mã khách hàng, tôi rời phần duy nhất có liên quan, full code here.
private var socket :XMLSocket;
socket = new XMLSocket();
socket.addEventListener(DataEvent.DATA, dataHandler);
private function dataHandler(event:DataEvent):void
{
var now:Date = new Date();
textField.appendText(event.data + " time = " + now.getMinutes() + ":" + now.getSeconds() + ":" + now.getMilliseconds() + "\n");
connectButton.x += 2;
}
private function keyDownHandler(event:KeyboardEvent):void
{
socket.send("some data");
}
private function connectMouseDownHandler(event:MouseEvent):void
{
var connectAddress:String = "ep1c.org";
var connectPort:Number = 13250;
Security.loadPolicyFile("xmlsocket://" + connectAddress + ":" + String(connectPort));
socket.connect(connectAddress, connectPort);
}
Chỉ là một suy nghĩ ở đây nhưng tôi đang bị ấn tượng nếu một đối tượng SWF không có tiêu điểm trong HTML nó sẽ chạy ở tốc độ khung hình thấp hơn. Điều này sẽ giải thích "choppyness", tuy nhiên trên ubuntu/chrome nó chạy tốt mà có thể là flash player trên thiết lập đó xử lý nó một cách khác nhau. Bạn đã thử nó trên các máy khác nhau và không chỉ trên cùng một máy? Tôi mơ hồ nhớ rằng tốc độ có thể giảm đáng kể xuống khoảng 2 FPS –
cảm ơn bạn, tôi đã thử 2 máy khác nhau với ubuntu và 4 với widnows, tất cả như nhau. Khi tôi chạy hai máy khách, trên hai máy khác nhau (tất cả các máy khách đều có tiêu điểm), khách hàng chờ đợi dữ liệu bị chuyển động và nhật ký xấu như thế nào (như tôi đã đăng trong câu hỏi dưới đây). –