4000 Node.js学习之TCP聊天程序
2017-06-28 11:30
609 查看
创建一个基本的TCP服务器,任何人都可以连接到该服务器,无需实现任何协议或者指令: 1、成功连接到服务器后,服务器会显示欢迎信息,并要求输入用户。同时显示当前有多少个其他客户端已经连接。 2、输入用户名,回车,确认连接。 3、连接好后,输入信息回车,将信息向其他客户端发送。
首先创建项目目录:tcp-chat
在tcp-chat文件夹中,创建package.json文件
{ "name" : "tcp-chat", "version" : "0.0.1", "description" : "Our first Tcp Server" }
创建index.js文件
/* 模块依赖 */ var net = require('net'); /* 追踪用户连接数 */ var count = 0; /* 定义用户 */ var users = {}; /* 创建服务器 */ var server = net.createServer(function(conn) { // 处理连接 console.log('\033[90m net connection! \033[39m'); // 处理编码 conn.setEncoding('UTF-8'); // 代表当前链接的昵称 var nickname = null; // 向客户端输出信息 conn.write( '\n > welcome to \033[90m node-chat \033[39m!' + '\n > ' + count + ' other people are connected at this time.' + '\n > please write your name and press enter: ' ); count++; // 监听data事件 conn.on('data', function(data) { // 删除回车符 data = data.replace('\r\n', ''); // 接受用户昵称 if (!nickname) { // 不允许昵称重复 if (users[data]) { conn.write('\033[93m nickname already in use. please try again: \033[39m'); return; } else { nickname = data; users[nickname] = conn; for (var i in users) { broadcast('\033[90m > ' + nickname + ' joined the room\033[39m\n'); // users[i].write('\033[90m > ' + nickname + ' joined the room\033[39m\n'); } } } else { // 聊天信息 for (var i in users) { // 发送信息给除自己之外的其他客户端 if (i != nickname) { broadcast('\033[90m > ' + nickname + ' : \033[39m' + data + '\n'); // users[i].write('\033[90m > ' + nickname + ' : \033[39m' + data + '\n'); } } } console.log(data); }); // 当客户端关闭,计数器变量递减 conn.on('close', function() { count--; // 客户端关闭后,应该删除用户信息 delete users[nickname]; // 告诉其他客户端,有客户端退出 broadcast('\033[90m > ' + nickname + ' left the room\033[39m\n') }); }); /* 监听 */ server.listen(3000, function() { console.log('\033[96m server listening on *:3000 \033[39m'); }); /* 向用户广播信息 */ function broadcast(msg, exceptMyself) { for (var i in users) { if (!exceptMyself || i != nickname) { users[i].write(msg); } } }
项目运行前再CMD输入npm install ,添加项目需要的依赖;该项目没有外部依赖,最好还是运行一下,养成习惯,避免后期麻烦。然后输入node index.js 启动项目。
说明一下,我的系统是win10,telnet客户端无法打开所以在CMD中打开bash方式使用telnet客户端。win10中打开bash的方法请自行搜索。
根据提示输入用户昵称,并多启动几个客户端即可测试项目。
注:以上内容为学习笔记,摘自《了不起的Node.js》
相关文章推荐
- Smashing Node.js程序书学习后感
- Node.js + Web Socket 打造即时聊天程序嗨聊
- Node.js + Web Socket 打造即时聊天程序嗨聊
- node.js学习之创建TCP服务器
- Node.js + Web Socket 打造即时聊天程序嗨聊
- Node.js + Web Socket 打造即时聊天程序嗨聊
- TCP聊天程序学习笔记
- Node.js学习之TCP/IP数据通讯(实例讲解)
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
- 【《Node.js 实战》学习思维导图】第12章 部署Node程序并维持正常运行时间
- Node.js + Web Socket 打造即时聊天程序嗨聊
- 4000 基于DES加密的TCP聊天程序
- c#网络编程学习笔记02_Tcp编程(中)_简单的同步tcp聊天程序
- 基于node的websocket学习笔记三:scoket.io基础与利用scoket.io构建聊天程序示例
- P2P聊天程序,学习TcpListener/TcpClient/Socket用法
- [前端] Node.js + Web Socket 打造即时聊天程序嗨聊
- Java学习笔记(二)-------客户端一对多(TCP)多人聊天小程序
- Node.JS 利用socket.io 实现dj播放及聊天程序 代码
- 【《Node.js 实战》学习思维导图】第5章 存储Node程序中的数据
- 【《Node.js 实战》学习思维导图】第4章 构建Node Web程序