5

Years ago I created a programming collaboratory in Diversity University MOO -- a room written in MOOcode that used TCP/IP to communicate with a perl server back at my campus to compile and execute C, Perl, Bash and other programs and return results to the MOO collaboratory -- all for demonstrating programming languages in a MOO teaching environment. The application is usually a romp in five or six languages and fun to play with. Now I'd like to do the same thing in SecondLife using LSL. The only suggestion I've gotten so far from that crowd is to use a WWW request, presumeably constructing an http POST message to a CGI process. I never cared much for html forms so I'd rather use TCP/IP or some other communications protocol. Has anyone tried this who'd care to provide a few hints? There are several good LSL demo sites in SecondLife but I'd like to demo other compiler and script languages, maybe even PowerShell. Dick S.

4

5 回答 5

5

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

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

于 2008-09-19T18:23:03.657 回答
4

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

  • 原始 HTTP:请求必须由 LSL 脚本发起
  • XmlHTTP:请求必须由外部服务发起
  • 电子邮件:完全双向通信,但具有强制睡眠定时器。
于 2009-02-04T18:00:49.540 回答
2

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

如果您希望脚本响应速度非常快,那么最好的办法就是让服务器端代码在服务器使用 XML-RPC 意识到该对象后回调该对象。

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

于 2009-04-10T23:59:57.033 回答
2

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

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

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

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

于 2009-06-19T22:06:45.310 回答
0

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

Linden 脚本语言中 JSON的新实现应该对此有所帮助。您可能想先阅读官方 wiki 上 LSL 页面中的Json 用法。

于 2013-06-03T10:50:04.440 回答