首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebSockets新手使用Railo

WebSockets新手使用Railo
EN

Stack Overflow用户
提问于 2012-05-26 03:26:49
回答 3查看 792关注 0票数 0

无可否认,我在所有服务器、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这样的健壮语言。

EN

回答 3

Stack Overflow用户

发布于 2012-05-26 21:29:26

Railo扩展对我来说工作得很好。提交一些测试代码以便我们可以对其进行调试如何?当然,websockets项目非常年轻,而且正在全面部署中。因此,请随时派生并提交补丁或建议。你有很多选择:

票数 3
EN

Stack Overflow用户

发布于 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编码,它非常好用。

票数 0
EN

Stack Overflow用户

发布于 2012-05-26 05:06:33

“意外代码200”是由Railo的web套接字服务器发送过期响应引起的。他们改变了web socket规范,Chrome使用了更新的规范。

代码语言:javascript
复制
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套接字协议只支持文本,而不是二进制,所以当我将其扩展到我自己的聊天应用程序时,我必须实现我自己的命令来帮助控制服务器。在我的例子中,命令看起来像这样:

代码语言:javascript
复制
!kickusers: username, another_username, a_third_username

我的服务器代码将检查所有消息的第一个字符是否为'!‘如果存在,则会将其视为命令。然后,我将字符串切分,以获得命令"kickusers“和要踢的用户列表。然后,我调用适当的kick函数并将其传递给用户名数组。

由于我的场景是一个聊天客户端,这意味着用户可以直接在聊天中键入此命令,服务器将接受并响应它。

在我的服务器上部署所有这些内容的方式如下:

  • 当用户在他们的浏览器中访问我的服务器上的index.html页面时,Apache会为该页面提供服务。Apache在这里唯一的作用就是将index.html提供给请求它的客户端。
  • index.html页面包含了用来显示聊天的html和用来向服务器发送和接收聊天的javascript。基本上,index.html只是一个用超文本标记语言和Javascript编写的聊天客户端,它在浏览器中运行。
  • 我在服务器上通过ssh运行server.php来启动网络套接字服务器(完全独立于Apache),它只是坐在那里,处理聊天的事情,比如将文本回显到其他连接的客户端等。

虽然关于安装Apache和PHP的Arch wiki是特定于Arch的,但是安装Apache和PHP包的方式,配置Apache和PHP的部分适用于所有人。我将保存谷歌查询,如果您愿意,可以在此处提供链接:https://wiki.archlinux.org/index.php/LAMP

至于原型设计,我之所以给出Flynsarmy的聊天演示的链接,是因为他的评论很有帮助,他写了一个关于原型的博客,它是一个非常简单但完整的示例,展示了如何在php中使用web套接字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10760294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档