2012-12-18 15 views
0

这对我来说很难解释,甚至更难以想象我会怎么做,因为我不知道与Java和C#的网站的沟通界限,所以如果我嘲笑/没有意义在描述这个过程中,我很抱歉。我正在为网站制作JavaScript扩展程序。我想用Java或C#代替。可能吗?

基本上,我为www.plug.dj制作了一个“机器人”。这个机器人能够像kick用户一样执行命令,禁止用户,发送聊天消息,删除聊天消息,说随机事件等。截至目前,它的动力是一个简单的一个文件JavaScript代码与大量的听众以及使用Plug.dj API处理它们的回调。这一切都是由JS设计的 - 在后端,我认为Plug.dj是由Python驱动的,我可能是错的。

无论如何,我想要做的是创建一个除JS以外的语言的机器人。这是非常基础的,不是超级强大的,并且有一些像数据库交流的东西,以及我希望实现这些对于JS来说不可能/方便的东西。我只想知道这是否可行,如果是这样,我应该从哪里开始寻找?

我更喜欢Java或C#这样的语言。如果您需要了解更多信息才能回答此问题,请告诉我们!我想开始研究这个问题,我认为学习如何与使用Java/C#/网站的网站进行交流会很有趣。

+0

有迹象表明,把C#转换为JavaScript各种编译器。 – SLaks

+0

这实在不是我想到的。如果可能,我不希望JS参与。我不想离开它,因为我不习惯写它,这是因为我想要做JS限制的事情。 – connergdavis

+0

听起来这不是关于语言的选择,而是关于你是否在浏览器中编写这个机器人(带有限制)。 – Kylotan

回答

2

如果bot javascript在“他们”的服务器上运行,那么没有简单的解决方案。他们提供了一种在服务器上运行“你的”javascript的机制,但有可能他们不支持其他语言。 (唯一的办法就是问问他们)。假设答案是“否”,您需要调查您是否可以在客户端代码中实现您的“机器人”功能;例如一个自定义客户端,您可以从头开始以Java或C#或其他方式实现。这是一个很大的“如果”......因为只有当他们在外部API中公开你需要的服务器功能时,它才会起作用。

OTOH,如果bot javascript在“您的”服务器上运行,那么您应该可以将其更改为支持其他语言。 (这不一定是容易的,虽然...)


我的建议是,深呼吸......使用JavaScript坚持。我们都必须使用我们认为不“有趣”的语言。

+0

理想情况下,我想模仿一个低级别的网站连接,然后在其上构建一个框架 - 使用JavaScript的原始计划。我不运行服务器,但我认为有一种方法可以模拟Web浏览器的功能,而无需在此过程中包含Web浏览器。所以我想让这个语言模拟一个套接字连接并获得像浏览器一样的所有数据。那有意义吗? – connergdavis

+1

@connergdavis - 在*可能*可能,但它听起来像一个可怕的想法。 –

+0

我看到有人之前做到这一点,我相信WebSockets的参与,但Plug.dj可能因为使用它们抛弃,他们已经作出巨大的更新,他们的后端,例如在移动从AppEngine上别的东西。我会再次查找该代码,它确实不那么复杂,而且工作。 这里就是我说的是:在github上(https://github.com/Qix-/Base-Bot/)......还好看着它越近,看来,它是一个完整的重写Plug.dj放入的整个JavaScript代码听起来很痛苦且不必要。我同意你的看法,认为这个想法很糟糕 – connergdavis

0

我真的会把它留在JavaScript中,如果它是你需要在客户端运行的东西。

如果您需要进行数据库调用,您可以在它们之间引入一个Web服务层,您可以在其中创建与数据库交互的AJAX调用。

我认为你对JavaScript的理解是基本的,并不是很强大,这不是一个很好的理解。他们是今天构建的非常复杂的应用程序,只是JavaScript和HTML5。您可能需要开始查看像backbone.js,underscore.js和类似的库,这些库可以帮助您提供更高级的代码组织功能。

但是,如果您正在考虑构建单个客户端不会安装在其浏览器中的东西,而只是在自动管理员中与网站进行交互,那么您当然可以使用任何语言建立自己的Web服务你喜欢与他们的API交互并执行管理任务。

0

如果他们提供了运行客户端的JavaScript库,它似乎可能会通过HTTP与服务器进行通信。因此,您应该可以分析库和调用它来对服务器API进行逆向工程(这将是HTTP调用),并以您选择的语言重新实现它。

综观bot.js代码:

https://github.com/backus/Plug.DJ-Javascript-Chatbot/blob/master/bin/bot.js

似乎一切都归结到对他们的API对象的调用,如API.getDJs()API.getWaitList()等,如果你能确定这个API对象是如何工作的,那么你可能能够逆向工程并重新实施。

相关问题