字体:  

组织一个简单的多人聊天室软件项目,大家可以报名参加~

yunyunlover 发表于: 2007-12-04 20:49 来源: Ruby Community

这个projet的目标,是实现一个多用户的聊天软件~算是简易版的聊天室,只要实现基本功能就可以~~
这个项目是完完全全可以让一个新手立刻上马的~~~

我们使用:
用ruby来编程
图形界面工具用: TK, GTK+, QT, wxWidgets,或 Fox,.....这里我选用了GTK+
用模型DRb连接用户和服务器

因为GTK+的缘故~要在linux下完成这个项目

基本功能的实现有以下:
1,实现聊天室的用户界面,连接一个服务器并且很容易接受应用程序的等待。
2,应用程序允许放弃一个聊天的服务器
3,在多用户中实现连接到一个服务器的文字聊天
4,在每个用户登录时更新用户信息(登录名,城市。。。。。)

根据进行的进度,我们可以附加实现以下功能:
1,保存所有的信息到服务器和用户的文件里。
2,显示表情图片。
3,传送文件。
4,用户登录界面。
5,安全的传送数据。


对于drb,有以下一些提示:

drb的功能是非常强大和简单的实现用户和服务器之间的交流

大家可以使用模型rinda,他是模型Linda在ruby下的一个分支(http://en.wikipedia.org/wiki/Tuple_space).



Linda的联想图


其中, tuplespace是一个放置管道的空间,他来管理应用程序的空间分配的信息,每个管道都有任意的大小,并且一般来说,一个管道是有生命时间的限制的(比如:60s)。

至于管道空间的操作有如下:
1. 写:写一个管道到管道空间里
2. 读:从管道空间读取数据,寻找你想要的管道,根据存在的尺寸和管道值的条件(比如说:第一个由message_type_ 开始的元素)
3. 取:和读一样,但是是从管道空间里删除一个管道。

下面是关于读和写的程序编码:

emitter.rb

#!/usr/bin/env ruby

require 'drb/drb'
require 'rinda/ring'
require 'rinda/tuplespace'

DRb.start_service 'druby://localhost:6666'

tuple_space = Rinda::TupleSpace.new
ring_server = Rinda::RingServer.new tuple_space

while true
  tuple_space.write [:message, gets]
end

DRb.thread.join



reader.rb

#!/usr/bin/env ruby

require 'drb/drb'
require 'rinda/ring'
require 'rinda/tuplespace'

DRb.start_service

tuple_space = Rinda::RingFinger.primary

while true
    puts tuple_space.take([:message, nil])[1]
end

DRb.thread.join



[ 本帖最后由 yunyunlover 于 2007-12-4 13:51 编辑 ]

最新回复

yunyunlover at 2007-12-04 20:59:14
我对这个项目目前有一点构想~~~~~但是因为对ruby完全的不熟悉~~~~

所以希望各位ruby高手也能来给个主意~~~~

这个项目是被skyover和drive2me两位热心的管理员鼎立支持的~~~

所以,虽然还没开始,我已经万分感激了~~~

我会在半个月内努力完成,希望能在圣诞节前做完所有的工作~~~~

之后会把开发的心得发上来和大家分享~~~
(自然,如果只是在大家的帮助下,我一个人完成的话~)
yunyunlover at 2007-12-04 21:03:43
如果有人参与这个项目的话~我想大家分工合作的重点就是drb和GTK+的界面

也就是一个人(团队)专门研究如何开发聊天室基本功能的实现

另一个人(团队)专门研究GTK+界面的实现

之后,大家在把项目和在一起~~~

这个聊天室的功能就基本实现了~~
yunyunlover at 2007-12-04 21:14:56
聊天室的界面大致如下:


聊天室进入界面.jpg


聊天室界面.jpg

admin at 2007-12-04 23:03:23
已经通过,项目地址:http://dev.ruby-lang.org.cn/projects/show/8
wiki地址:http://dev.ruby-lang.org.cn/wiki/8
SVN地址:http://svn.ruby-lang.org.cn/rchat

希望早日签入代码,招到人手,兴旺起来!
playing5460 at 2007-12-08 21:57:59
支持!
playing5460 at 2007-12-08 22:16:12
现在进展如何?
drive2me at 2007-12-09 10:08:27
还没开始呢,现在要找人带他们做,还要找会员一起来做。

我去发通知,找人来开发。
admin at 2007-12-14 09:48:21
yunyunlover 还没有把代码check-in吗?
yunyunlover at 2007-12-16 02:28:29
不知道怎么check in~~~~
admin at 2007-12-16 12:50:51
我发给你的附件看了吗?在论坛里有个帖子上有说明的。
你需要安装一个SVN的客户端来做这事。
Sevenpairs at 2007-12-19 17:10:59
请问有没有相关的参考书籍,或者是介绍ruby图形界面的书?谢谢
bob.yang at 2007-12-20 00:14:44
使用ruby开发GUI程序,可以使用 wxRuby, wxRuby 是wxWidget的一个ruby语言绑定实现。
主页是:http://wxruby.rubyforge.org/wiki/wiki.pl

wxWidget 是一个跨平台的GUI库,是用C++实现的。有很长的历史,类似于MFC,但是是开源的。因为MFC逐渐退出微软的产品线,现在有很多C++的程序员开始用wxWidget编写windows,MacOS, linux下的GUI程序了。
drive2me at 2007-12-20 11:44:22
To Bob.Yang,

Bob你终于来了,太好了。这位楼主的愿意把他们大学(一家法国大学)的项目拿到这里作为开源项目来做,但他也刚开始了解Ruby,所以需要我们的开发版主协助他来管理和开发这个项目。

你可以帮助他找到一位开发版主(我们的会员)来开发他们大学的项目吗?我一直在找,但还没有找到。这个月我很忙,Sky也很忙,你来了,正好帮助我们一下。谢谢!
bob.yang at 2007-12-20 21:15:33
drive2me 兄,我会先在论坛上召集一下该项目版主。
如果暂时没有的话我先兼职着。呵呵
phoenix at 2008-1-08 19:32:11
能不能用Rails写后台,这样不用另外开发服务端程序,可以同时使用Web聊天和专门的客户端聊天,自己开发的客户端只要发送HTTP请求就好了,后台根据客户端的不同而返回相应的渲染页面,如果这个项目要用到Rails,我报个名。
x116 at 2008-1-16 14:04:37
如果要用Rails 我也报名个。
miserableman at 2008-1-28 10:43:37
在公司學了幾個星期的Rails,很想也自己做個看看
drive2me at 2008-1-29 09:22:57
都可以参加的呀。
monad at 2008-2-23 22:02:27
我想参加。。怎么加入?