From 836bc413f93b83f65a0d2ef316110bd478a8042e Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 25 Dec 2013 14:39:54 +0800 Subject: [PATCH] fix the bug of publish, server close the connection when timeout. --- trunk/research/api-server/server.py | 2 +- trunk/research/players/js/srs.player.js | 0 trunk/research/players/js/srs.publisher.js | 23 ++++++++++++------ trunk/research/players/srs_chat.html | 10 +++----- trunk/research/players/srs_publisher.html | 2 +- .../srs_publisher/release/srs_publisher.swf | Bin 4609 -> 4742 bytes .../srs_publisher/src/srs_publisher.as | 13 ++++++++++ 7 files changed, 35 insertions(+), 15 deletions(-) mode change 100644 => 100755 trunk/research/players/js/srs.player.js mode change 100644 => 100755 trunk/research/players/js/srs.publisher.js diff --git a/trunk/research/api-server/server.py b/trunk/research/api-server/server.py index 5e860145f..99918cd87 100755 --- a/trunk/research/api-server/server.py +++ b/trunk/research/api-server/server.py @@ -343,7 +343,7 @@ class RESTChats(object): self.__chat_lock = threading.Lock(); # dead time in seconds, if exceed, remove the chat. - self.__dead_time = 30; + self.__dead_time = 15; def GET(self): enable_crossdomain() diff --git a/trunk/research/players/js/srs.player.js b/trunk/research/players/js/srs.player.js old mode 100644 new mode 100755 diff --git a/trunk/research/players/js/srs.publisher.js b/trunk/research/players/js/srs.publisher.js old mode 100644 new mode 100755 index 43823b744..b46d51ef7 --- a/trunk/research/players/js/srs.publisher.js +++ b/trunk/research/players/js/srs.publisher.js @@ -35,9 +35,12 @@ function SrsPublisher(container, width, height, private_object) { // error code defines. this.errors = { - "100": "无法获取指定的摄像头", //error_camera_get - "101": "无法获取指定的麦克风", //error_microphone_get - "102": "摄像头为禁用状态,推流时请允许flash访问摄像头" //error_camera_muted + "100": "无法获取指定的摄像头。", //error_camera_get + "101": "无法获取指定的麦克风。", //error_microphone_get + "102": "摄像头为禁用状态,推流时请允许flash访问摄像头。", //error_camera_muted + "103": "服务器关闭了连接。", //error_connection_closed + "104": "服务器连接失败。", //error_connection_failed + "199": "未知错误。" }; } /** @@ -84,11 +87,17 @@ SrsPublisher.prototype.start = function() { * @param acodec an object contains the audio codec info. */ SrsPublisher.prototype.publish = function(url, vcodec, acodec) { - this.url = url; - this.vcodec = vcodec; - this.acodec = acodec; + if (url) { + this.url = url; + } + if (vcodec) { + this.vcodec = vcodec; + } + if (acodec) { + this.acodec = acodec; + } - this.callbackObj.ref.__publish(url, this.width, this.height, vcodec, acodec); + this.callbackObj.ref.__publish(this.url, this.width, this.height, this.vcodec, this.acodec); } SrsPublisher.prototype.stop = function() { this.callbackObj.ref.__stop(); diff --git a/trunk/research/players/srs_chat.html b/trunk/research/players/srs_chat.html index 06c6c9600..23de8b3f3 100755 --- a/trunk/research/players/srs_chat.html +++ b/trunk/research/players/srs_chat.html @@ -64,7 +64,7 @@ ); }; srs_publisher.on_publisher_error = function(code, desc) { - error(code, desc); + error(code, desc + "请重试。"); }; srs_publisher.on_publisher_warn = function(code, desc) { warn(code, desc); @@ -78,6 +78,7 @@ realtime_player = new SrsPlayer("realtime_player", 430, 185); realtime_player.on_player_ready = function() { this.set_bt(0.5); + this.set_fs("screen", 100); }; realtime_player.start(); } @@ -229,7 +230,6 @@ var _player = new SrsPlayer("rp_raw_" + chat.id, 600, 300, chat); _player.on_player_ready = function() { this.set_bt(0.5); - this.play(); this.set_fs("screen", 100); }; _player.start(chat.url); @@ -254,7 +254,6 @@ return; } chat.player.play(); - chat.player.set_fs("screen", 100); }); } @@ -419,14 +418,13 @@ $("#btn_join").text("退出会议"); - info("开始推流到服务器。请戴耳机聊天,否则音箱的声音会进入麦克风"); + info("开始推流到服务器。请戴耳机聊天,否则音箱的声音会进入麦克风造成回声。"); srs_publisher.publish(url, vcodec, acodec); if (realtime_player) { // directly play the url for the realtime player. realtime_player.stop(); realtime_player.play(url, 0); - realtime_player.set_fs("screen", 100); } } }); @@ -513,7 +511,7 @@ -
+
diff --git a/trunk/research/players/srs_publisher.html b/trunk/research/players/srs_publisher.html index c48df777f..b587720f8 100755 --- a/trunk/research/players/srs_publisher.html +++ b/trunk/research/players/srs_publisher.html @@ -64,7 +64,7 @@ ); }; srs_publisher.on_publisher_error = function(code, desc) { - error(code, desc); + error(code, desc + "请重试。"); }; srs_publisher.on_publisher_warn = function(code, desc) { warn(code, desc); diff --git a/trunk/research/players/srs_publisher/release/srs_publisher.swf b/trunk/research/players/srs_publisher/release/srs_publisher.swf index 600127ded749f30d95b40862029c8858c7c57b94..c4d2fd2fe6645b5cd1b52be5c726c071623a1da8 100755 GIT binary patch literal 4742 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 diff --git a/trunk/research/players/srs_publisher/src/srs_publisher.as b/trunk/research/players/srs_publisher/src/srs_publisher.as index 8d63004d3..3a4458e5f 100755 --- a/trunk/research/players/srs_publisher/src/srs_publisher.as +++ b/trunk/research/players/srs_publisher/src/srs_publisher.as @@ -48,6 +48,8 @@ package private const error_camera_get:int = 100; private const error_microphone_get:int = 101; private const error_camera_muted:int = 102; + private const error_connection_closed:int = 103; + private const error_connection_failed:int = 104; public function srs_publisher() { @@ -181,6 +183,17 @@ package } contextMenu.customItems = customItems; } + + if (evt.info.code == "NetConnection.Connect.Closed") { + js_call_stop(); + system_error(error_connection_closed, "server closed the connection"); + return; + } + if (evt.info.code == "NetConnection.Connect.Failed") { + js_call_stop(); + system_error(error_connection_failed, "connect to server failed"); + return; + } // TODO: FIXME: failed event. if (evt.info.code != "NetConnection.Connect.Success") {