NodeJs 小试牛刀 -- 聊天室搭建
nodejs 的安装这里就不详细赘述了。
程序创建
引入 required 模块
创建监听端口
以上代码我们完成了一个可以工作的 HTTP 服务器。使用 node 命令执行以上的代码:(***就是我们上面代码保存的文件名)
express 模块
这样我们的 8000 端口就开启这个服务了。下面我们通过 socket.io 模块实现服务于客户端的交互。
socket.io 模块
首先 io.sockets.on 函数接受字符串"connection"作为客户端发起连接的事件,当连接成功后,调用带有 socket 参数的回调函数。我们在使用 socket.IO 的时候,基本上都在这个回调函数里面处理用户的请求。
socket 中最重要的两个方法是 emit 和 on 方法。说白了就是发送和接收的方法。在服务端 socket.emit 就是想客户端发送数据,socket.on 就是接收客户端返回的数据。在客户端恰恰相反。
connect 作为客户端发起连接的事件。当连接成功后开始调用带有 socket 的回调函数。
客户端对应的就发起这个连接请求。发起连接后客户端向服务端发起一个事件 login,并且携带参数对象(userid,username,userpwd)。下面我们看看服务端接收这个事件 login
nodejs 主要通过 socket 来实现服务端和客户端的通信
其他 API
向所有客户端广播:socket.broadcast.emit('broadcast message');
我们可以通过他实现群内公告等功能。
进入一个房间(非常好用!相当于一个命名空间,可以对一个特定的房间广播而不影响在其他房间或不在房间的客户端):socket.join('your room name');
向一个房间广播消息(发送者收不到消息):socket.broadcast.to('your room name').emit('broadcast room message');
向一个房间广播消息(包括发送者都能收到消息)(这个 API 属于 io.sockets):io.sockets.in('another room name').emit('broadcast room message');
强制使用 WebSocket 通信:(客户端)socket.send('hi'),(服务器)用 socket.on('message', function(data){})来接收。
版权声明: 本文为 InfoQ 作者【zxhtom】的原创文章。
原文链接:【http://xie.infoq.cn/article/9f80ca21c0f8adba7e13c75ad】。文章转载请联系作者。
评论