设为首页 收藏本站
查看: 1090|回复: 0

[经验分享] nodejs 边学边做之telnet 聊天工具

[复制链接]

尚未签到

发表于 2017-2-22 09:35:36 | 显示全部楼层 |阅读模式
利用Net module 做的简单聊天工具,可以使用telnet 连接这个程序
var net = require('net');
var config = {
separate : '\r\n'
};
var connections = new Object();
var server = net.createServer(function (c) {
var ip = c.remoteAddress;
var port = c.remotePort;
connections[ip+port] = c;
c.write('Welcome to chat room! your ip is ' + ip+port);
c.write(config.separate + 'I say:');
var buffers = [];
c.setEncoding('utf-8');
c.on('data', function (data) {
var index = data.indexOf(config.separate);
if (index < 0) {
buffers.push(data);
} else {
var contents = data.split(config.separate);
// contents[0] + buffers will send
var buffer = '';
for (var i = 0, l = buffers.length; i < l; i++) {
buffer += buffers;
}
var message = contents[0] + buffer;
buffers = [];
sendAll(c, message);
// contents[n] will send
if (contents.length > 2) {
for (var i = 1, l = contents.length; i < l - 1; i++) {
sendAll(c, contents);
}
}
// contents[last] will be push into buffers
buffers.push(new Buffer(contents[contents.length - 1]));
}
});
c.on('close',function(){
delete connections[ip+port];
});
});

function sendAll(conn, message) {
for (var address in connections) {
if(connections.hasOwnProperty(address)){
console.log(address);
if (conn != connections[address]) {
console.log('other');
var what2say = config.separate + conn.remoteAddress + ':' + conn.remotePort +
'@[' + now() + '] said:' + message +
config.separate + 'I say: ';
connections[address].write(what2say);
} else {
console.log('self');
connections[address].write(config.separate + 'I say: ');
}
}
}
}
function now() {
var date = new Date();
hour = date.getHours();
min = date.getMinutes();
sec = date.getSeconds();
return hour + ':' + min + ':' + sec;
}
server.listen(8888, function () {
console.log('listen to 8888....');
});


 上周末又做了一个网页版的, 一会上传。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345512-1-1.html 上篇帖子: 做着玩的NodeJS服务器端模板引擎--Elf 下篇帖子: 关于NodeJS 的Session模块-一应用Express
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表