通过websocket,服务器可以主动给客户端发消息,并且不需要每次都http请求一下,下面是我写的一个简单小程序;
- 服务器端node.js
var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.send('<h1>Welcome Realtime Server</h1>'); }); io.on('connection', function(socket){ console.log('a user connected'); //连接后定时发送信息 setInterval(function(){ io.emit('message', "正在连接"); },2000); //监听用户发布聊天内容 socket.on('message', function(obj){ //向所有客户端广播发布的消息 io.emit('message', obj); console.log(obj.username+'说:'+obj.content); }); }); http.listen(3000, function(){ console.log('listening on *:3000'); });
- 前端展示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.0/socket.io.dev.js"></script> <title>实时定位结果展示</title> </head> <body> <script src="./js/index.js"></script> <script> var socket = io.connect('ws://localhost:3000'); socket.on('connect', function () { //连接成功 console.log("success"); }); socket.on('disconnect', function (data) { //连接断开 console.log("disconnect"); }); socket.on('message', function (data) { console.log(data); }); </script> </body> </html>
运行结果如下图:网页端后台一直输出消息