-1

我创建了一个想要用萤火虫填充的 Jar,具体取决于在线用户的数量。

我做了一点挖掘,发现了如何创建 XMLSocket。它有效,但我不知道如何获取有多少人在线的信息,而且它需要一个 CMD 窗口一直运行。

我发现的第二种方法是通过我在 Apache 服务器上运行的 PHP、MYSQL 女巫,但是我发现的教程和脚本对我不起作用,例如. 我没有创建所需的表。

我的问题是在您的页面/闪存文件上查找当前在线用户数的最简单方法是什么?有没有一种快速的方法可以在 Flash 中完成而不涉及 MYSQL 或 PHP?

4

4 回答 4

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

.php 文件

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;

于 2012-05-24T21:53:47.863 回答
0

是的,你可以在没有数据库(MYSQL)和 PHP 的情况下做到这一点;但是您仍然需要一个(媒体)服务器。如果您的“唯一”目的是计算连接客户端,我不会建议以下内容,但如果您有原因并且可以访问Flash Media Server,您可以尝试以下操作:

在服务器端:

  1. 在 FMS 上创建一个应用程序(文件夹),在该文件夹中创建 main.asc 文件。
  2. 在 main.asc 里面;创建一个(远程)SharedObject(服务器端)(例如users_so:)
  3. 注意在application.onConnect事件中连接客户。将每个连接客户端添加到此处理程序内的 SharedObject。
  4. application.onDisconnect还要注意在事件中断开客户端。从此处理程序内的 SharedObject 中删除每个断开连接的客户端。

在客户端:

  1. 当应用程序在浏览器中加载时,将每个 Flash 客户端连接到 FMS(在 URI 中使用您的新应用程序文件夹路径)。
  2. 注意NetStatusEvent.NET_STATUS事件和"NetConnection.Connect.Success"代码。连接时;创建一个SharedObject(客户端)并从服务器获取远程。
  3. SyncEvent.SYNC事件侦听器添加到SharedObject. 当用户连接或断开与服务器的连接时,这将与每个 Flash 客户端同步。
  4. 在同步事件处理程序中,从事件响应中获取并计算用户数。
  5. 在您的 Flash 客户端上显示计数。

请参阅Flash Media Server 4.5 的服务器端 ActionScript 语言参考,尤其是应用程序类。也很有用:Flash Media Server 开发人员中心

希望这可以帮助。

于 2012-06-13T21:13:14.767 回答
0

我不这么认为,flash player 必须需要一种方法来在服务器上“检查”在线用户的数量。最简单的方法是将 URLRequest(我希望我的类名正确)发送到服务器脚本,该脚本可以是 php 或 aspx(或任何服务器技术)脚本/页面。

该服务器脚本应返回站点拥有的用户数。

例如

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 问题发布吗?

于 2012-05-24T13:19:35.730 回答
0

不,没有一种简单的方法可以只在 Flash 中完成而不使用任何外部部件(PHP、MySQL、Java 等等......)。请记住,Flash 是在本地运行的,因此需要与 PHP 或类似的交互来与服务器交互,以告知服务器用户的活动并询问服务器其他用户的活动(在线用户数)。

如果您只想在线显示用户,我推荐您发布的示例中显示的方式。只需在用户看到活动时更新数据库,并在 x 分钟内没有看到任何活动时将该用户计为离线。除非您希望用户以任何方式相互交互,否则无需为此涉及 XMLSockets。

如果您想要的不仅仅是在线显示用户,我建议在 ActionScript 中使用 XMLSockets 并研究 PHP Sockets。

于 2012-05-24T13:12:57.300 回答