Tcp LSL通信

Tcp LSL通信,tcp,communication,remote-execution,linden-scripting-language,Tcp,Communication,Remote Execution,Linden Scripting Language,几年前,我在多样性大学MOO创建了一个编程协作室——一个用MOOcode编写的房间,它使用TCP/IP与校园内的perl服务器通信,以编译和执行C、perl、,Bash和其他程序,并将结果返回MOO协作室——所有这些都是为了在MOO教学环境中演示编程语言。该应用程序通常是一个五种或六种语言的轻松游戏,玩起来很有趣。现在我想在SecondLife中使用LSL做同样的事情。到目前为止,我从这群人那里得到的唯一建议是使用WWW请求,假定为CGI进程构造http POST消息。我从来都不太喜欢html表

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

现在流行于web服务。根据您的描述,没有真正的理由深入到TCP/IP层,因为它不需要超级性能或响应时间。LSL HTTP支持非常好,所以您应该不会有任何问题


当然,实时获取程序的输出并不理想——因为您需要在服务器上打开http连接,并不断地向页面主体写入数据(而客户端会读取数据)。但是,即使在服务器和客户端之间来回切换,您也应该能获得相当好的体验。

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

  • 原始HTTP:请求必须由LSL脚本启动
  • XmlHTTP:请求必须由外部服务发起
  • 电子邮件:完全双向通信,但带有强制睡眠计时器

    • 我倾向于同意伊利亚的观点

      如果希望脚本具有很强的响应性,那么最好的方法是在使用XML-RPC让服务器知道对象后,让服务器端代码回调该对象


      Second Life的主wiki对于示例代码等非常有用。

      LSL的llHTTPRequest函数和相应的http\U响应事件绝对是您的最佳选择

      与您在问题中提出的假设相反,使用http并不需要使用“html表单”。POST(或PUT)负载可以包含按您所需方式组织的数据。REST接口是一种很好的方式,可以实现我们正在讨论的那种机器对机器的http通信。与html或xml相比,REST的一个优点是REST的详细程度要小得多。当您开始接近LSL对http响应的2048个字符限制时,这一点很重要

      尽管LSL还有另外两种与internet其余部分通信的方法(电子邮件和xml rpc),但目前在LSL脚本中使用它们是非常不受欢迎的。这两个系统(目前在SecondLife中实现)都依赖于集中式服务器将消息路由到它们的目的地。这不能很好地扩展。随着SecondLife的发展,这些服务器的负载不断增加。另一方面,llHTTPRequest完全在运行脚本的模拟器上运行,这意味着您不必担心由于中央服务器过载而丢失消息


      最后,LSL不久将添加一个新特性,允许任何脚本充当http服务器(请参阅)。它目前(截至2009年6月)已部署在beta版网格上,但在下一次重大更新时应该会部署在主网格上。有了这一功能,当前许多定期轮询web服务器以获取更新数据的LSL-to-web程序将能够在更新发生时将更新推送到服务器。

      正如Ilya所说,REST和LSL-HTTP将是一种可行的方法

      Linden脚本语言中JSON的新实现应该有助于实现这一点。您可能希望从阅读官方wiki上的页面开始