http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014727922914053479c966220f47da91991fa9c27ac3ea000
package.json
{
"name": "hello-ws",
"version": "1.0.0",
"description": "Hello WebSocket example",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"keywords": [
"ws",
"websocket"
],
"author": "Michael Liao",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/michaelliao/learn-javascript.git"
},
"dependencies": {
"ws": "1.1.1"
}
}
app.js
const WebSocket = require('ws');
const WebSocketServer = WebSocket.Server;
const wss = new WebSocketServer({
port: 3000
});
wss.on('connection', function (ws) {
console.log(`[SERVER] connection()`);
ws.on('message', function (message) {
console.log(`[SERVER] Received: ${message}`);
setTimeout(() => {
ws.send(`What's your name?`, (err) => {
if (err) {
console.log(`[SERVER] error: ${err}`);
}
});
}, 1000);
})
});
console.log('ws server started at port 3000...');
// client test:
let count = 0;
let ws = new WebSocket('ws://localhost:3000/ws/chat');
ws.on('open', function () {
console.log(`[CLIENT] open()`);
ws.send('Hello!');
});
ws.on('message', function (message) {
console.log(`[CLIENT] Received: ${message}`);
count++;
if (count > 3) {
ws.send('Goodbye!');
ws.close();
} else {
setTimeout(() => {
ws.send(`Hello, I'm Mr No.${count}!`);
}, 1000);
}
});
另一種測(cè)試方法
打開可以執(zhí)行JavaScript代碼的瀏覽器Console輸入:
// 打開一個(gè)WebSocket:
var ws = new WebSocket('ws://localhost:3000/test');
// 響應(yīng)onmessage事件:
ws.onmessage = function(msg) { console.log(msg); };
// 給服務(wù)器發(fā)送一個(gè)字符串:
ws.send('Hello!');
Paste_Image.png