大家好~~正在用ruby编一个简单的多人聊天室软件~~

大家好~~正在用ruby编一个简单的多人聊天室软件~~

我是一个法国留学生,今年课程里加入了ruby的内容~~~以前没有听说过,但是一接触,就非常的喜欢~~~

学了点皮毛的东西在课堂上,现在,我们正在做一个聊天室的小软件~~~用drb,tuplespace和GTK+界面工具~~~

终于可以摆脱死板的c++,心里虽然很开心~~~但对我,在这个动态灵活的小家伙面前,开始有些束手无措了~~

我已经决心在这一个月内,好好研究这门新兴语言了~~~希望大家有什么知识,不吝赐教~~~~

我也会把自己的学习进度,学习心得放上来和大家分享~~~~~

谢谢~~~~~~~~~~~
因为是新手~~~~对于编程,以前只接触过VB,C, sql,和一点点地c++~~~

但接触了ruby这两个月来,发现它是我真正有兴趣来学的一门编程语言~~~~~~~~

我想这个projet只是我在这个领域里的一块敲门砖而已~~~~~

下面我把这个projet的基本功能实现的计划翻译出来~~~还有我自己的一点构想~~~
楼主加油!期望早点看到你的项目出来。
这个projet的目标,是实现一个多用户的聊天软件~类似于简易版的msn~

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

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

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

引用:
原帖由 maninred 于 2007-11-27 21:25 发表
楼主加油!期望早点看到你的项目出来。
对于drb,老师给了一些提示:

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

大家可以使用模型rinda,他是模型Linda的一个分支(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
一些关于drb和rinda学习网站的链接

http://segment7.net/projects/ruby/drb/rinda/ringserver.html

http://c2.com/cgi/wiki?TupleSpace
关于界面软件GTK+的链接

http://yusei.ragondux.com/inform ... ation_ruby-gtk.html

http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk%3A%3AEntry
国外就是不一样,呵呵,课堂上还有Ruby可学,国内的软件学院学的都是Java,连asp.net的课程都没有。

希望楼上的能够将这个产品好好作出来,如果愿意,也可以成为我们的一个开源项目之一,如果有意,可以PM我。
我也是建议你把你的项目作为开源项目(如果可能),放到我们论坛来,然后会员们可以和你一起做,你也有会员一起讨论了,如何?

如果你们愿意,就短信给我们呀,我们会支持你们的。

谢谢!