scoketio
服务器代码
let net = require('net');
// 创建服务器
let server = net.createServer(); // 定义一个数组 ,存放每一个连接服务器的客户端用户
let clients = []; server.on('connection',(client)=>{ //参数表示client 表示要连入的客户端对象
// 记录每一个连入的客户端 通过id
client.id = clients.length;
// 将连入的客户端存入数组中
clients.push(client);
// 服务器监听连入客户端 并将每一个客户端传送的数据 广播给其他用户
// 如果某个客户端存在 将客户端传入的数据发送给 其他的客户端
// 设置字符集
client.setEncoding('utf8');
client.on('data',(data)=>{
for(let i = 0;i < clients.length ; i++ ){
if( clients[i] ){
//连入服务器的每个用户
clients[i].write(data) //返回每个客户端的数据内容
}
}
}) // 当前连入的客户端退出
client.on('close',(err)=>{
clients[client.id]=null;
})
client.on('error',(err)=>{
clients[client.id]=null;
}) }) server.listen('8000','127.0.0.1',()=>{
console.log('ok');
})
客户端代码:
let net = require('net');
// 多人通信
let readline = require('readline');
// 创建一个客户端服务
let client = new net.Socket();
client.connect('8000','127.0.0.1');
// 服务器传来数据 这里做监听
client.setEncoding('utf8');
client.on('data',(data)=>{
console.log(data);
});
let rl = readline.createInterface({
input:process.stdin, //输入
output:process.stdout //输出
})
// 监听控制台输入的内容 发送给服务器
rl.on('line',(input)=>{
if(input==='quit'){
rl.close();
client.destroy();
}else{
client.write(input);
}
})
client.write("hello word!");
scoketio的更多相关文章
- flask-SocketIO
本文来源:https://www.jianshu.com/p/d81397edd2b1 websocket是html5中实现了服务端和客户端进行双向文本或二进制数据通信的一种新协议,其实已经低于HTT ...
随机推荐
- Linux /var/log下的各种日志文件详解
1)/var/log/secure:记录登录系统存取数据的文件;例如:pop3,ssh,telnet,ftp等都会记录在此. 2)/var/log/wtmp:记录登录这的信息记录,被编码过,所以必须以 ...
- A - 畅通工程续 最短路
某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在 ...
- WPF自定义控件(五)の用户控件(完结)
用户控件,WPF中是继承自UserControl的控件,我们可以在里面融合我们的业务逻辑. 示例:(一个厌恶选择的用户控件) 后端: using iMicClassBase; using iMicCl ...
- SQL Server 数据导入Mysql具体教程
SQLServer2005数据导入Mysql到具体教程(測试) SQL SERVER数据导入MYSQL文件夹 1.Navicat for MySQL 版本号10.0.9 2.创建目标数据库 3.创 ...
- JavaScript 浮点数运算的精度问题
问题描述 在 JavaScript 中整数和浮点数都属于 Number 数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此. 所以我们在打印 1.00 这样的浮点数的结果是 1 而非 ...
- range()函数
range()函数 函数说明: range(start, stop[, step]) -> range object,根据start与stop指定的范围以及step设定的步长,生成一个序列.参数 ...
- 【ES6】函数
函数默认值问题 在ES6之前,不能直接为函数指定默认值,但是ES6允许为函数的参数设置默认值 之前实现方式 function log(x, y) { y = y || 'World'; console ...
- Java中Enumeration接口的用法
Enumeration是java.util中的一个接口类,在Enumeration中封装了有关枚举数据集合的方法,与Iterator差不多,用来遍历集合中的元素 但是枚举Enumeration只提供 ...
- 环境部署(四):Linux下查看JDK安装路径
在安装好Git.JDK和jenkins之后,就需要在jenkins中进行对应的设置,比如在全局工具配置模块,需要写入JDK的安装路径. 这篇博客,介绍几种常见的在Linux中查看JDK路径的方法... ...
- 支持“xxxContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
将项目的数据库连接用户及密码修改后(切换用户,用户名与原来不一样,用户下对象结构一致),报以下错误: 支持“XXXDBContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code Fir ...