nodejs之socket.io模块——实现了websocket协议

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

  1. var app = require('http').createServer(handler),
  2. io = require('socket.io').listen(app),
  3. fs = require('fs')
  4. app.listen(8080);
  5. io.set('log level', 1);//将socket.io中的debug信息关闭
  6. function handler (req, res) {
  7. fs.readFile(__dirname + '/index.html',function (err, data) {
  8. if (err) {
  9. res.writeHead(500);
  10. return res.end('Error loading index.html');
  11. }
  12. res.writeHead(200, {'Content-Type': 'text/html'});
  13. res.end(data);
  14. });
  15. }
  16. io.sockets.on('connection', function (socket) {
  17. socket.emit('news', { hello: 'world' });
  18. socket.on('my other event', function (data) {
  19. console.log(data);
  20. });
  21. });

2、客户端:

1)websocket是html5标准,浏览器内部已经支持了,其编程接口大致有connect、close、open、send几个接口,如果要使用浏览器原生的方式编写websocket,比较繁琐,所以可以下载一个客户端库方便编程,使用的是socket.io客户端库

2)index.html

  1. <!DOCTYPE html>
  2. <html >
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Ssocket</title>
  6. <script type="text/javascript" src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
  7. </head>
  8. <body>
  9. <script type="text/javascript">
  10. var socket = io.connect('http://localhost:8080');
  11. socket.on('news', function (data) {
  12. alert(data.hello);
  13. socket.emit('my other event', { my: 'data' });
  14. });
  15. </script>
  16. </body>
  17. </html>

3、测试:

启动服务端nodejs代码:node server.js

在浏览器输入 http://localhost:8080/index.html

浏览器打印出: world

命令行打印出:{ my: 'data' }