使用ws包
//app.js
//npm install ws
//.....
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 8181 });
wss.on('connection', function (ws) {
console.log('client connected');
ws.on('message', function (message) {
console.log(message);
});
});
app.listen(3000);
<!DOCTYPE html>
<html>
<head>
<title>websocket</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<input type="text" id="ipt">
<button onclick='sendMessage()'>send</button>
<script>
var ipt = document.getElementById('ipt');
var ws = new WebSocket("ws://127.0.0.1:8181");
ws.onopen = function (e) {
console.log('Connection to server opened');
};
function sendMessage() {
ws.send( ipt.value );
};
</script>
</body>
</html>
使用Socket.io包
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var bodyParser = require('body-parser');
var path = require('path');
var express = require('express')
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use( '/public' , express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res){
res.render('idx');
});
io.on('connection', function(socket){ //建立连接
console.log('a user connected');
socket.on("disconnect", function() { //客户端断开连接
console.log("a user go out");
});
socket.on("message", function(obj) { //接收客户端发的消息
io.emit("message", obj); //往客户端发送
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="/public/socket.io.js"></script>
</head>
<body>
<input type="text" id="ipt">
<button id="btn">send</button>
<ul id="message"></ul>
<script>
socket = io.connect('ws://127.0.0.1:3000');
socket.emit("message", {"name" : navigator.userAgent, "msg" : "hello world"}); //发送消息
socket.on("message", function(obj) { //接收后台传来的消息
console.log(obj);
});
var ipt = document.getElementById('ipt');
var btn = document.getElementById('btn');
btn.onclick = function(){
socket.emit('message', { "data":ipt.value }) //将输入框里的内容发送到后台
}
</script>
</body>
</html>