安装必要的依赖包
安装所有必要的依赖包:
npm install nodejs express ws
安装ShadowsocksR
根据你的操作系统选择相应的安装方式:
Windows版
C:\Users\<name>\AppData\Roaming\Microsoft\Windows\CurrentVersion\Bin\ShadowsocksR.tsx
macOS版
import "https://raw.githubusercontent.com/shadowsocks/shadowsocksR tsx"
Linux版
安装到[root]目录:
sudo apt-get install -y nodejs express ws python -m shadowsocksr
设置配置脚本
创建一个配置脚本,通常名为config.ts或类似名:
import { default, console } from '@ shadowsocks/r/4..';
default {
server_url: 'http://localhost:88',
ws_config: {
read: true,
body: true
},
lts: true,
tsconfig: {
fallback: {
min: 124
}
}
}
编写客户端的WebSocket client
创建一个客户端的WebSocket client文件:
import { WebSocket } from '@ shadowsocks/r/4..';
import { default } from '@ shadowsocks/r/4..';
const client = default();
const ws = new WebSocket('ws://localhost:88', { read: true });
ws.on('connection', (event) => {
console.log('Client connected');
event.data().split('/callback').forEach((data, index) => {
if (data[] === 'main') {
console.log('Server entering main mode');
} else {
console.log(data);
}
});
});
ws.on('close', () => {
console.log('Client disconnected');
});
app.on('connection', (event) => {
console.log('Client connected');
});
app.on('connection', { data, end }) => {
console.log('Client disconnected');
});
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
client.on('message', (event: any) => {
onMessage(event);
});
client.on('close', () => {
console.log('Client closed');
});
const onConnection = (event: any) => {
console.log('Client connected');
};
client.on('connection', onConnection);
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
client.on('disconnect', onDisconnect);
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
client.on('message', onMessage);
const onError = (event: any) => {
console.error('Error:', event.error);
};
client.on('error', onError);
app.on('close', () => {
console.log('Server closed');
});
app.on('connection', { data, end }) => {
console.log('Client connected');
};
app.on('connection', (event) => {
console.log('Client connected');
});
app.on('close', () => {
console.log('Server closed');
});
app.on('connection', (data, end) => {
console.log('Client connected');
});
app.on('close', () => {
console.log('Server closed');
});
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
client.on('message', onMessage);
const onConnection = (event: any) => {
console.log('Client connected');
};
client.on('connection', onConnection);
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
client.on('disconnect', onDisconnect);
const onError = (event: any) => {
console.error('Error:', event.error);
};
client.on('error', onError);
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
client.on('message', onMessage);
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event: any) => {
console.log('Received:', event.data());
};
const onConnection = (event: any) => {
console.log('Client connected');
};
const onDisconnect = (event: any) => {
console.log('Client disconnected');
};
const onError = (event: any) => {
console.error('Error:', event.error);
};
const onMessage = (event


