我正在尝试使用纯Ruby构建聊天应用程序。此前有一个类似的问题发布在Stack Overflow上,但我有不同且相关的疑问。我看了这个例子(与之前发布类似问题的人所引用的相同)。然而,该示例中的代码似乎对我无效。在终端上运行ruby脚本并在浏览器中连接到URL:http://localhost:1234后,我一直遇到“从localhost传输数据”的消息。
对于每个浏览器实例,都会连接到聊天队列中(它们有唯一的客户端ID以进行识别)。我想通过在运行的浏览器实例中添加一个文本框(类似于我们在HTML中使用的内容),来重用示例中的代码。用户可以在其中输入他们的消息并通过单击按钮(也集成在浏览器中)发布它。这将反映在其他各种客户端的浏览器实例中,聊天就像这样继续进行,直到用户输入“退出”字符串离开聊天室。
我不确定如何在Ruby中实现上述功能,如果有建议或相关文章可供参考,将非常有帮助。
非常感谢!!
这里的1234是提供的示例中使用的端口号。我无法确定运行失败的原因。也许我需要在执行脚本时在命令行中指定某些内容,或者我应该通过其他地方(可能是浏览器)启动聊天(输入输出)。我无法确定具体该怎么做。你能帮我解决这个问题吗?
我基本上没有修改聊天服务器代码就运行了它。我在同一主机上运行Web服务和聊天服务器。
我已经部分地使代码在某些方面工作。下面是对我有效的修改后的代码。
require 'gserver'
class BasicServer < GServer
def initialize(*args)
super(*args)
# Keep an overall record of the client IDs allocated
# and the lines of chat
@@client_id = 0
@@chat = []
end
def serve(io)
# io.puts("Hello world!")
# Increment the client ID so each client gets a unique ID
@@client_id += 1
my_client_id = @@client_id
my_position = @@chat.size
# io.puts(@@chat.size)
# Give the total number of people who are currently on chat.. for e.g. 0 => 1 person on chat
# Leave a message on the chat queue to signify this client
# has joined the chat
@@chat << [my_client_id, ""]
# io.puts(@@chat)
end
end
server = BasicServer.new(1234)
server.start
#sleep 120
#server.shutdown
对于每个浏览器实例,都会连接到聊天队列中(它们有唯一的客户端ID以进行识别)。我想通过在运行的浏览器实例中添加一个文本框(类似于我们在HTML中使用的内容),来重用示例中的代码。用户可以在其中输入他们的消息并通过单击按钮(也集成在浏览器中)发布它。这将反映在其他各种客户端的浏览器实例中,聊天就像这样继续进行,直到用户输入“退出”字符串离开聊天室。
我不确定如何在Ruby中实现上述功能,如果有建议或相关文章可供参考,将非常有帮助。
非常感谢!!