我创建了一个Jar,我想填充萤火虫,具体取决于有多少用户在线。
我做了一点挖掘,我发现了如何创建XMLSocket。它工作但我不知道如何获取有多少人在线的信息,并且它还需要一个CMD窗口一直运行。
我发现的第二种方式是通过我的Apache服务器运行的PHP,MYSQL,但是我发现的教程和脚本对我来说并不适用于example。我没有创建所需的表格。
我的问题是,在您的网页/ Flash文件中找到当前在线用户数的最简单方法是什么?有没有快速的方法在Flash内部进行,而不涉及MYSQL或PHP?
答案 0 :(得分:0)
不,没有一种简单的方法可以在不使用任何外部部件(PHP,MySQL,Java等等)的情况下在Flash中执行此操作。请记住,Flash是在本地运行的,因此需要与PHP交互,以便与服务器交互,告诉服务器用户的活动,并向服务器询问其他用户的活动(在线用户数)。
如果您只想在线显示用户,我建议您发布的示例中显示的方式。只需在用户看到活动时更新数据库,并在x分钟未显示任何活动时将用户计为脱机。除非您希望用户以任何方式相互交互,否则无需涉及XMLSockets。
如果您不仅需要在线显示用户,我建议您在ActionScript中使用XMLSockets并查看PHP套接字。
答案 1 :(得分:0)
我不这么认为,Flash播放器必须要有一种方法在服务器上“检查”在线用户的数量。最简单的方法是将一个URLRequest(我希望我的类名正确)发送到服务器脚本,该脚本可以是php或aspx(或任何服务器技术)脚本/页面。
该服务器脚本应返回该站点拥有的用户数。
e.g。
var numberOfVisitors:Int = 0;
function onLoaded(e:Event):void {
numberOfVisitors = e.target.data;
// now print this 'numberOfVisitors' where you want to on the client
}
var numVisitors:URLLoader = new URLLoader();
numVisitors.addEventListener(Event.COMPLETE, onLoaded);
numVisitors.load(new URLRequest("num_users.php"));
下一部分将是一个跟踪用户数量的php脚本(或任何其他服务器脚本)。我认为你应该发布另一个SO问题吗?
答案 2 :(得分:0)
我得到了它的工作,但我没有通过它的HTTP地址链接php文件,而只是相对于.swf文件的路径(只是myFile.php或path / myFile.php)。
AS3 file:
NewRequest = new URLRequest("numOnline.php");
var numberOfVisitors:int = 10;
var NewRequest:URLRequest;
var UrlLoader:URLLoader;
UrlLoader = new URLLoader();
UrlLoader.dataFormat = URLLoaderDataFormat.TEXT;
UrlLoader.addEventListener(Event.COMPLETE, onLoaded);
UrlLoader.load(NewRequest);
function onLoaded(e:Event):void {
trace(e.target.data);
numberOfVisitors = int(e.target.data);
}
我将文本As3接收转换为int,因为我还不知道如何发送veria
main PHP file (the file that as3 connects to):
<?php
include_once 'config.php'; //This file would contain the variables needed to connect to the database with $link, below
include_once 'functions.php'; //We include the functions we have created
$database = "online";
$link = mysql_connect($server, $db_user, $db_pass)or die ("Could not connect to mysql because ".mysql_error());
mysql_select_db($database)or die ("Could not select database because ".mysql_error());
usersOnline(5); //We call the usersOnline function with a time span of 5 minutes
showUsersOnline(1); //Show the number of users online, and the list of users
mysql_close($link);
?>
函数文件使用echo $count;
答案 3 :(得分:0)
是的,你可以在没有数据库(MYSQL)和PHP的情况下完成;但是你仍然需要一个(媒体)服务器。 如果您的“唯一”目的是计算连接客户端,我不会建议以下内容,但如果您有理由并且可以访问 Flash Media Server ,则可以尝试以下操作:
在服务器端:
users_so
)application.onConnect
事件上的客户端连接。将每个连接客户端添加到此处理程序中的SharedObject。application.onDisconnect
事件中断开客户端的连接。从此处理程序内的SharedObject中删除每个断开连接的客户端。在客户端:
NetStatusEvent.NET_STATUS
事件和"NetConnection.Connect.Success"
代码。连接时;创建一个SharedObject (client-side)并从服务器获取远程。 SyncEvent.SYNC
事件监听器添加到SharedObject
。当用户连接或断开与服务器的连接时,这将与每个Flash客户端同步。请参阅Server-Side ActionScript Language Reference for Flash Media Server 4.5,尤其是应用程序类。 同样有用:Flash Media Server Developer Center
希望这有帮助。