LSL通讯

时间:2008-09-19 16:25:43

标签: tcp communication remote-execution secondlife linden-scripting-language

多年前,我在Diversity University MOO创建了一个编程合作伙伴 - 一个用MOOcode编写的房间,它使用TCP / IP与我校园里的perl服务器进行通信,以编译和执行C,Perl,Bash和其他程序并返回结果是MOO合作实验室 - 所有这些都是为了在MOO教学环境中演示编程语言。该应用程序通常是五六种语言的嬉戏,玩起来很有趣。现在我想在SecondLife中使用LSL做同样的事情。我从这群人那里得到的唯一建议是使用WWW请求,假定为CGI进程构造一个http POST消息。我从不关心html表单,所以我宁愿使用TCP / IP或其他一些通信协议。有没有人试过这个谁愿意提供一些提示? SecondLife中有几个很好的LSL演示站点,但我想演示其他编译器和脚本语言,甚至可能是PowerShell。 迪克S。

5 个答案:

答案 0 :(得分:5)

REST现已成为网络服务的时尚。没有真正的理由可以使用您的描述中不需要超级性能或响应时间的内容来获取TCP / IP层。 LSL HTTP支持非常好,所以你不应该有任何问题。

当然,实时恢复程序输出并不理想 - 因为您需要在服务器上打开http连接并不断写入页面正文(而客户端会读取该内容) )。但即使在服务器和客户端之间来回切换,您也应该获得适度的良好体验。

答案 1 :(得分:4)

LSL的外部通信选项仅限于三个特定选项。官方LSL维基提供有关每个选项的更详细信息。

  • 原始HTTP:请求必须由LSL脚本启动
  • XmlHTTP:请求必须由外部服务启动
  • 电子邮件:完整的双向通信,但具有强制执行的睡眠定时器。

答案 2 :(得分:2)

我倾向于同意伊利亚。

如果您希望脚本具有高响应性,那么您可以提供的最佳功能是,一旦使用XML-RPC使服务器知道它,您的服务器端代码就会回调该对象。

Second Life的主要wiki非常适合示例代码等。XML-RPC

答案 3 :(得分:2)

LSL的llHTTPRequest函数和相应的http_response事件绝对是您最好的选择。

与您的问题中提出的假设相反,使用http并不需要使用“html表单”。 POST(或PUT)有效负载可以包含您想要的数据。 REST接口是我们谈论的那种机器到机器http通信的好方法。 REST优于html或xml的一个优点是REST可以更简洁。当您开始接近LSL对http响应的2048字符限制时,这很重要。

虽然LSL还有另外两种与其他互联网通信的方法(电子邮件和xml-rpc),但它们在LSL脚本中的使用目前仍然是高度。这两个系统(目前在Second Life中实现)依赖于集中式服务器将消息路由到其目的地。这不能很好地扩展。随着Second Life的增长,这些服务器的负载不断增加。另一方面,llHTTPRequest完全在运行脚本的模拟器上运行,这意味着您不必担心由于中央服务器过载而丢失消息。

最后,很快就会有一个新功能添加到LSL,允许任何脚本充当http服务器(请参阅http://wiki.secondlife.com/wiki/LSL_http_server)。它目前(截至2009年6月)部署在beta网格上,但应该在主网格上进行下一次重大更新。通过这种添加,许多当前定期轮询Web服务器以获取更新数据的LSL到Web程序将能够在它们发生时将更新推送给它们。

答案 4 :(得分:0)

正如Ilya所说,REST和LSL-HTTP将是最佳选择。

Linden Scripting Language中的 JSON 的新实现应该有助于此。您可能需要先阅读官方维基上的Json usage in LSL页面。