无可否认,我在所有服务器、Linux和websockets方面都是新手。我最终成功地设置了一个运行Apache、Tomcat和Railo的VM,我可以连接到它并提供CFM页面,同时学习UNIX命令行导航、服务器理论等……
这就是我的问题--只有一个Railo websocket扩展,它超级无用(我不得不修改CFC才能启动服务),但是我不能连接websocket (在Google Chrome中我一直收到“意外的代码200”)。只有很少的文档,这一点帮助都没有。
基本上,我正在尝试为一个使用websockets的未来项目做一些原型设计。我喜欢Railo,因为它的速度,安全性,以及非常繁重的数据库操作的出色能力。我对Node很感兴趣,但不知道如何从Javascript中获得与CFML相同的安全性和DB功能。
因此,我有几个问题: WebSocket服务器的最佳选择是什么?我应该尝试使用Apache和/或Tomcat吗?人们一直在说,让像Node.js这样的东西运行websockets部分,而让其他东西在背后做繁重的工作是完全不值得的--为什么会这样呢?我非常乐意用任何一种语言编写WS处理程序,只要我能朝着正确的方向前进一步,获得一些优秀的教程(我在这个部门似乎找不到太多),或者得到关于如何从头开始设置我的Linux机器来处理websockets的良好反馈--最好是如何处理websockets和Railo这样的健壮语言。
发布于 2012-05-26 21:29:26
Railo扩展对我来说工作得很好。提交一些测试代码以便我们可以对其进行调试如何?当然,websockets项目非常年轻,而且正在全面部署中。因此,请随时派生并提交补丁或建议。你有很多选择:
中
发布于 2012-05-26 03:33:34
node.js的主要问题是它是单线程的:您将无法使用它执行后台任务,并且本地IO将阻塞您的服务器。
我使用的一个解决方案是Go。它非常快,具有非常好的并发特性,并且集成了websocket和json库(示例:http://gary.beagledreams.com/page/go-websocket-chat.html)。一个高效的web应用服务器只需要几十行代码就可以完成。你会发现互联网上的文档仍然比java甚至node.js要少得多。
在java中有一些websockets的实现,但由于我正在将java中的所有东西都转换为Go,所以我还没有对它们进行测试。我知道我在java中使用Google gson进行json编码,它非常好用。
发布于 2012-05-26 05:06:33
“意外代码200”是由Railo的web套接字服务器发送过期响应引起的。他们改变了web socket规范,Chrome使用了更新的规范。
The problem seems to be caused by chrome & co implementing the new spec, "draft-ietf-hybi-thewebsocketprotocol-17". It requires the server to respond with "HTTP/1.1 101 Switching Protocols" rather than 200 OK.这是一个用PHP编写的web socket聊天服务器的完整演示。
http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/
这个flynsarmy演示包括最新版本的PHPWebSocket,它是一个完全用PHP编写的开源web套接字服务器,包含在一个文件中。demo连接到三个回调函数: connect、message recieved和disconnect。
对我来说,需要注意的重要一点是,web套接字协议只支持文本,而不是二进制,所以当我将其扩展到我自己的聊天应用程序时,我必须实现我自己的命令来帮助控制服务器。在我的例子中,命令看起来像这样:
!kickusers: username, another_username, a_third_username我的服务器代码将检查所有消息的第一个字符是否为'!‘如果存在,则会将其视为命令。然后,我将字符串切分,以获得命令"kickusers“和要踢的用户列表。然后,我调用适当的kick函数并将其传递给用户名数组。
由于我的场景是一个聊天客户端,这意味着用户可以直接在聊天中键入此命令,服务器将接受并响应它。
在我的服务器上部署所有这些内容的方式如下:
虽然关于安装Apache和PHP的Arch wiki是特定于Arch的,但是安装Apache和PHP包的方式,配置Apache和PHP的部分适用于所有人。我将保存谷歌查询,如果您愿意,可以在此处提供链接:https://wiki.archlinux.org/index.php/LAMP
至于原型设计,我之所以给出Flynsarmy的聊天演示的链接,是因为他的评论很有帮助,他写了一个关于原型的博客,它是一个非常简单但完整的示例,展示了如何在php中使用web套接字。
https://stackoverflow.com/questions/10760294
复制相似问题