LSL通讯
几年前,我在多样性大学MOO中创建了一个编程协作室-一个用MOOcode编写的房间,该房间使用TCP / IP与我校园内的perl服务器进行通信,以编译和执行C,Perl,Bash和其他程序并将结果返回给MOO合作-全部用于在MOO教学环境中演示编程语言。该应用程序通常是五到六种语言的玩法,并且玩起来很有趣。现在,我想使用LSL在SecondLife中做同样的事情。到目前为止,我与该人群的唯一建议是使用WWW请求,大概是为CGI进程构造一个HTTP POST消息。我从不关心html表单,所以我宁愿使用TCP / IP或者其他一些通信协议。有谁尝试过这个谁愿意提供一些提示吗? SecondLife中有几个不错的LSL演示站点,但我想演示其他编译器和脚本语言,甚至PowerShell。
迪克S.
解决方案
REST现在流行用于Web服务。没有真正的理由进入TCP / IP层,因为从描述来看,这些不需要超级性能或者响应时间。 LSL HTTP支持非常好,因此我们应该没有任何问题。
当然,实时获取程序输出不是理想的,因为我们将需要在服务器上打开http连接并不断写入页面正文(而客户端会读取)。但是,即使在服务器和客户端之间来回移动,我们也应该获得适度的良好体验。
LSL的外部通讯选项仅限于三个特定选项。 LSL官方Wiki提供了有关每个选项的更多详细信息。
- 原始HTTP:请求必须由LSL脚本启动
- XmlHTTP:请求必须由外部服务启动
- 电子邮件:双向通讯,但具有强制睡眠计时器。
我倾向于同意伊利亚。
如果我们希望脚本具有很高的响应能力,则可能能够做到的最好是,一旦服务器使用XML-RPC意识到了该对象,就可以将服务器端代码回调给该对象。
"第二人生"的主要Wiki非常适合示例代码等。XML-RPC
LSL的llHTTPRequest函数和相应的http_response事件绝对是我们最好的选择。
与问题提出的假设相反,使用http不必使用" html表单"。 POST(或者PUT)有效负载可以包含根据需要组织的数据。 REST接口是进行我们正在谈论的机器对机器http通信的一种好方法。 REST比html或者xml的优势之一是REST的详细程度要低得多。当我们开始在HTTP响应上接近LSL的2048个字符限制时,这一点很重要。
尽管LSL还有另外两种与Internet其余部分进行通信的方法(电子邮件和xml-rpc),但如今极不鼓励在LSL脚本中使用它们。这两个系统(当前在Second Life中实现)都依靠集中式服务器将消息路由到其目的地。这不能很好地扩展。随着"第二人生"的发展,这些服务器承受的负载不断增加。另一方面,llHTTPRequest完全在运行脚本的模拟器上运行,这意味着我们不必担心由于中央服务器过载而导致消息丢失。
最后,不久将在LSL中添加一个新功能,该功能允许任何脚本充当http服务器(请参阅http://wiki.secondlife.com/wiki/LSL_http_server)。它目前(截至2009年6月)已部署在Beta网格上,但应与下一个主要更新一起部署在主网格上。有了此添加功能,许多当前的LSL到Web程序(定期轮询Web服务器以获取更新的数据)将能够在发生更新时将更新推送到它们。