Nodejs實現websocket的4種方式:socket.io、WebSocket-Node、faye-websocket-node、node-websocket-server,主要使用的是socket.io
1、服務端:
1)首先安裝socket.io
npm install socket.io
2)server.js
- var app = require('http').createServer(handler),
- io = require('socket.io').listen(app),
- fs = require('fs')
- app.listen(8080);
- io.set('log level', 1);//將socket.io中的debug信息關閉
- function handler (req, res) {
- fs.readFile(__dirname + '/index.html',function (err, data) {
- if (err) {
- res.writeHead(500);
- return res.end('Error loading index.html');
- }
- res.writeHead(200, {'Content-Type': 'text/html'});
- res.end(data);
- });
- }
- io.sockets.on('connection', function (socket) {
- socket.emit('news', { hello: 'world' });
- socket.on('my other event', function (data) {
- console.log(data);
- });
- });
2、客戶端:
1)websocket是html5標准,瀏覽器內部已經支持了,其編程接口大致有connect、close、open、send幾個接口,如果要使用瀏覽器原生的方式編寫websocket,比較繁瑣,所以可以下載一個客戶端庫方便編程,使用的是socket.io客戶端庫
2)index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Ssocket</title>
- <script type="text/javascript" src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
- </head>
- <body>
- <script type="text/javascript">
- var socket = io.connect('http://localhost:8080');
- socket.on('news', function (data) {
- alert(data.hello);
- socket.emit('my other event', { my: 'data' });
- });
- </script>
- </body>
- </html>
3、測試:
啟動服務端nodejs代碼:node server.js
在瀏覽器輸入 http://localhost:8080/index.html
瀏覽器打印出: world
命令行打印出:{ my: 'data' }