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 ...
随机推荐
- python3编写网络爬虫18-代理池的维护
一.代理池的维护 上面我们利用代理可以解决目标网站封IP的问题 在网上有大量公开的免费代理 或者我们也可以购买付费的代理IP但是无论是免费的还是付费的,都不能保证都是可用的 因为可能此IP被其他人使用 ...
- JavaScript的基本包装类型_String类型
String类型概述 String在底层字符串是以字符数组的形式保存的 var str = "Hello"; // 在底层其实就是['H','e','l','l','o'] 字符串 ...
- Loj#6183. 看无可看
Loj#6183. 看无可看 题目描述 首先用特征根求出通项公式\(A_n=p\cdot 3^n+q\cdot(-1)^n\).通过给定的\(f_0,f_1\)可以解出\(p,q\). 然后我们要求的 ...
- chrome postman插件手动安装
注:转自 http://blog.csdn.net/u010246789/article/details/51481134 1.下载postman插件,可以自己到网上下载,也可以点击http://do ...
- git 冲突解决的方法
版权声明:本文为博主原创文章,未经博主同意不得转载. 新博客地址:www.atomicdevelop.com https://blog.csdn.net/believer123/article/det ...
- Python 的 GUI 开发工具
kivy https://kivy.org/#home flexx https://flexx.readthedocs.io/en/stable/
- TensorFlow 学习资料
感谢几位大神的笔记: https://blog.csdn.net/column/details/13300.html?&page=3 https://blog.csdn.net/u014595 ...
- 洛谷P2982 [USACO10FEB]慢下来Slowing down
题目 题目大意 :给出一棵树,节点有点权,求每个节点的祖先中点权小于该节点的结点的个数 . 思路如下 : 从根节点开始,对树进行深度优先遍历. 当进行到节点 i 时,有: $\text{i}$ 的祖 ...
- ②---Java开发工具Eclipse安装配置
Java开发工具Eclipse安装及配置 以下将为大家介绍Java开发工具Eclipse安装及配置. 一.下载Eclipse安装文件 正所谓工欲善其事必先利其器,我们在开发java语言过程中同样需要依 ...
- robotframework使用中的一些注意事项
1.关于\的转义.使用\\ 2.关于字符串的合并 3.切换到iframe,切出iframe 4.对对象右键点击 5.对对象实现按键操作,在处理一些下拉对象时需要用到. 6.当元素定位十分困难的时候,需 ...