CNode

用node.js和Websocket来做个多人聊天室吧

Aauzll发布于15 年前最后回复13 年前14 回复31359 浏览0 收藏

初学node.js和html5的相关技术(node方面大部分都是在cnodejs.org上面看技术文章学到的),想着学以致用,于是基于node.js和websocket来做了一个多人聊天室: 一、功能简介 1、用户随意输入一个昵称即可登录 2、登录成功后 1) 对正在登录用户来说,罗列所有在线用户列表,罗列最近的历史聊天记录 2) 对已登录的用户来说,通知有新用户进入房间,更新在线用户列表 3、退出登录 1) 目前未支持直接退出,只能通过关闭网页来退出... 2) 当有用户退出,其他所有在线用户会收到信息,通知又用户退出房间,同时更新在线用户列表 4、聊天 1) 聊天就是广播,把信息广播给所有连接在线的用户 5、一些出错处理 1) 暂时简单处理了系统逻辑错误、网络出错等特殊情况的出错提示 二、技术简介 1、node方面主要是基于node-websocket-server这个框架;服务器和客户端用JSON数据来通讯; 2、其他的就不多说了,直接贴上这个小demo的源码地址: https://github.com/auzll/nodechat 。有兴趣的可以看看,欢迎各位网友批评指正。 三、参考文章 1、websocket与node.js的完美结合( http://cnodejs.org/blog/?p=273 ) 。从这里了解到node-websocket-server 这个框架的,一个node.js和websocket通讯的框架,本程序中有使用到。 2、nodejs: 真正的一份代码,到处运行( http://cnodejs.org/blog/?p=702 ) 。从这里了解到如何在svr和client中同时复用部分代码,当然,本程序也模仿了这里面的技术来做,例如我源码里面svr/chatLib.js其实是同时被svr和client公用的。 四、附带几张效果图 1、 进入源码目录,svr/Main.js,执行node Main.js来启动 2、 输入昵称 3、 聊天主界面 4、 聊天主界面之“后登陆用户查看历史消息”

查看回复

回复 (14)

A
anonymous#1·15 年前

我在windows下面用node.exe运行 提示我 process.stdout.flush(); 这个错误 说WriteStream has no method flush 这是怎么回事? 是缺少什么包吗?

A
anonymous#2·15 年前

客户端在打开web/index.html网页,而不是在浏览器中输出localhost:9800

F
fuckadd#3·13 年前
引用 awen1983我的websocket 本地跑没问题,放NAE上也是能跑起来的,可是外面却连不上websocket服务器,为什么?

请教一下node Main.js以后怎么访问工程里面的html?我不管怎么访问 页面都显示No Implemeted.

N
nodem#4·13 年前

点击“进入聊天室”没有反应啊,话说chatroom.htm里面也的button也没有绑定点击事件啊。。。怎么破

B
bbyyzhang#5·15 年前

我使用的0.6.6 Node.js,在Linux下运行 process.stdout.flush(); ^ TypeError: Object # has no method 'flush' at /root/jasper/monsocket/lib/ws/connection.js:43:22 at new Connection (/root/jasper/monsocket/lib/ws/connection.js:82:5) at Server. (/root/jasper/monsocket/lib/ws/server.js:65:7) at Server.emit (events.js:88:20) at Socket. (http.js:1389:14) at TCP.onread (net.js:348:27)

O
ouyangwanbin#6·15 年前

我的chrome版本:15.0.874.121 m ,实现了draft10标准以后,整个系统能够跑起来,但有一个奇怪的问题,就是chat.js里在onopen以后,连续send了3个消息(login,list_user,list_history),这三个请求如果不间断的发送,会导致错误,错误的原因是发送的json格式出错,也就是未能正确的发送消息,但如果在其中插入alert的话,是可以正确发送3个消息。在node-websocket-server提供的chat实例里,也试过在onopen事件触发的时候连续发送多条消息,都会出现错误。不知哪位高人能给出一下解释?

K
kingdemonccgg#7·15 年前

chromium 18 chrome 出现无法连接服务器的问题 onopen事件 无法执行 这是怎么回事 浏览器的问题吗?我看了node-websocket-server的源码 他使用的75的标准 我在网上查到chrome貌似更新到76了 我修改node-websocket-server的源码让他使用76标准 同样无法运行.有谁能用chrome 运行起这个例子吗?教教我 谢了

N
naiteluo#8·15 年前

最近也做了个这样的聊天室,然后升级成了一个你画我猜的游戏,可惜还找不到支持websocket的免费服务器

A
abbish#9·15 年前

未来nodejs在websocket方面会成为重头戏

C
chaizc#10·15 年前

为什么我运行不起来这个例子呢 ? 我安装 express 的项目都能跑起来。。 但是这个项目,我node Main.js 后,启动起来后,,我访问 http://ip:9800/index.html 却访问不到页面 ? 请教,这个为什么呢?

D
DoubleSpout#11·15 年前

我想问一下,用户的唯一标识UUID是如何创建的呢? 数据存储是用什么呢?

A
awen1983#12·14 年前

我的websocket 本地跑没问题,放NAE上也是能跑起来的,可是外面却连不上websocket服务器,为什么?

P
paomian#14·13 年前
引用 DoubleSpout我想问一下,用户的唯一标识UUID是如何创建的呢? <br/ 数据存储是用什么呢?

能不能控制只有经过验证的用户可以建立连接呢,类似与只有登录的用户才能建立websocket

参与回复
登录后即可参与回复。登录