- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个多人游戏,该游戏从服务器读取XML数据:
_socket = new Socket();
_socket.addEventListener(ProgressEvent.SOCKET_DATA, handleTcpData);
.....
private function handleTcpData(event:Event):void {
while (_socket.bytesAvailable) {
var str:String = _socket.readUTF();
updateGUI(str);
}
}
updateGUI()
停止调用。
readUTF()
是个好主意吗?可能是
readUTF()
中,不是吗? (虽然我从未见过)
EOFError
,我也有很好的建议
_socket.bytesAvailable
字节
ByteArray
并使用该代码(检查我的完整消息是否
private function handleTcpData(event:Event):void {
var len:uint;
if (0 == _socket.bytesAvailable)
return;
try {
_socket.readBytes(_ba, _ba.bytesAvailable, _socket.bytesAvailable);
// read the length of the UTF string to follow
while (_ba.bytesAvailable >= 2) {
len = _ba.readUnsignedShort();
// invalid length - reset
if (0 == len) {
trace('XXX invalid len = ' + len);
_ba.position = 0;
_ba.length = 0;
return;
}
if (_ba.bytesAvailable >= len) {
var str:String = _ba.readUTFBytes(len);
updateGUI(str);
// copy the remaining bytes
// (does it work? can it be improved?)
var newBA:ByteArray = new ByteArray();
newBA.readBytes(_ba);
_ba = newBA;
}
}
} catch(e:Error) {
trace('XXX ' + e);
_ba.position = 0;
_ba.length = 0;
return;
}
}
最佳答案
我想,我找到了解决方案。
由于TCP性质,可能会出现2种有问题的情况:
1)几个带有前缀的UTF字符串一次到达
2)带有前缀的不完整的UTF字符串到来
此代码应同时处理以下两个方面:
private function handleTcpData(event:Event):void {
// CASE 1, JUST KEEP EXTRACTING UTF-STRINGS
while(_socket.bytesAvailable) {
try{
var str:String = _socket.readUTF();
updateGUI(str);
}catch(e:Error){
// CASE 2 INCOMPLETE STRING,
// WILL BE READ BY LATER handleTcpData CALL
return;
}
}
}
var newBA:ByteArray = new ByteArray();
_ba.readBytes(newBA);
_ba = newBA;
关于flash - bytesAvailable,readUTF()和ProgressEvent.SOCKET_DATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318083/
我在 Flash 中使用 ProgressEvent 来确定下载内容需要多长时间。我有这个: progress = event.target.bytesLoaded/event.tar
我正在尝试在浏览器中异步加载二进制数据: var req = new XMLHttpRequest(); req.open("GET", "test.bin"); req.responseType =
我在使上传进度条正常工作时遇到了一些问题。 根据 XMLHttpRequest Level 2 规范,我附加了加载开始和进度的事件监听器,如下所示: var xhr = $.ajaxSettings.
我正在尝试通过添加一些 ajax 来改进一些页面上的用户体验。我有一个 ajax 请求: var xhr = new XMLHttpRequest(); xhr.open('POST', '/sear
我在 Google Chrome、Safari 和 Firefox 中使用 XMLHttpRequest 加载一个 JSON 文件。在所有三种浏览器中,我都收到了正确显示 .loaded 属性的 Pr
我正在尝试通过对进度事件使用 XMLHttpRequest 级别 2 支持,以 HTML5 的方式实现上传进度条。 在你看到的每一个例子中,方法都是像这样给进度事件添加一个事件监听器: req.add
这个真的让我很困惑。 我有监听 AJAX 事件的代码,所有这些都按计划运行,但有一个让我觉得奇怪的怪癖。即,如果我将错误事件监听器附加到 AJAX XMLHttpRequest 对象,并且在该对象上触
有没有办法在 AS3 中跟踪已发布上传的状态?有一个 ProgressEvent,但它返回有关响应的数据,而不是实际的 POST 上传。我发布图像的二进制数据,所以它通常在 50-100kb 范围内。
我想在 dart 中进行 http 调用,但是当我尝试返回 ProgressEvent 错误时,有些网站返回了错误,有些则没有。我不明白。 dartpad example import 'dart:h
我正在尝试使用这样的代码调用 Web API 端点。 verifyUserLogin(userName: string, password: string): Observable { let
在我的 HttpServive 中,我共享了处理开始/结束加载栏、为 JWT 设置正确 header 等的 http 方法。 一切都很好,但现在我想在 catch 中添加一些逻辑来检查非 200 状态
我是一名优秀的程序员,十分优秀!