//导入net
var net = require('net');
var path = require('path')
var config = require(path.join(__dirname, './config'));
// 创建连接,产生socket对象
var client = net.createConnection({
host: config.host,
port: config.port
})
var username = '';
// 输入消息
client.on('connect', function () {
console.log('进入聊天室......\n请输入用户名:');
/**
* 准备输入聊天信息
* nodejs中提供了process模块,支持终端设备进行IO操作,全局模块。不需要导入
* stdin对象获得键盘输入(回车后)
* 接收到键盘输入,就将消息发送到服务器
*/
process.stdin.on('data', function (data) {
data = data.toString().trim();
// 判断用户是否已经有来注册用户名
if (!username) {// 没有注册的话
var send = {
mstype: 'singup',
username: data
}
client.write(JSON.stringify(send));
// console.log("注册成功");
return;
}
var regex = /(.{1,18}):(.+)/;
var matches = regex.exec(data);
if (matches) {
var from = username;
var to = matches[1];
var message = matches[2];
var send = {
mstype: 'p2p',
from: from,
to: to,
message: message
}
client.write(JSON.stringify(send));
} else {
var send = {//广播消息
mstype: 'broadcast',
from: username,
message: data
};
client.write(JSON.stringify(send))
}
});
})
//接收服务端的socket信息
client.on('data', function (data) {
//console.log(JSON.parse(data));
data = JSON.parse(data);
// console.log(data.mstype);
switch (data.mstype) {
case "signup":
var code = data.code;
switch (code) {
case 1000:
username = data.username;
console.log(data.message);
break;
case 1001:
console.log(data.message);
break;
default:
break;
}
break;
case 'broadcast':
console.log(data.message);
break;
case 'p2p':
var code = data.code;
switch (code) {
case 2000:
username = data.username;
console.log(data.message);
break;
case 2001:
console.log(data.message);
break;
default:
break;
}
break;
default:
break;
}
});
client.on('error', function () {
console.log('服务器异常退出。');
})
nodejs+socket打造多人聊天室完整项目
5星 · 超过95%的资源 需积分: 23 117 浏览量
2022-04-27
20:59:58
上传
评论
收藏 4KB ZIP 举报
勇敢*牛牛
- 粉丝: 2704
- 资源: 5
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论10