安装 npm install socket.io --save
// 导入socket.io模块
var io = require('socket.io')
一、单独使用:
// 创建socket.io服务器
var server = io()
// 监听connection事件
server.on('connection',function(socket){
console.log('connect')
})
// 在80端口监听
server.listen(80);
二、和http Server搭配使用
var http = require('http') // 创建HTTP Server var server = http.createServer(); // 创建socket.io Server 使用HTTP Server var ioServer = io(server) // 80 端口监听 server.listen(80); // 监听connction事件 ioServer.on('connection',function(socket){ console.log('有新连接...'); })
三、和express配合使用
服务器端:
var express = require('express')
var http = require('http')
// 创建express Server
var app = express();
app.use(express.static(__dirname))
// 使用express Server创建普通http Server
var server = http.createServer(app)
// 使用http Server创建socket Server(一定要使用http Server,不能直接使用app)
var ioServer = io(server)
// 监听connection事件,当有客户端连接会触发此事件
ioServer.on('connection',function(socket){
console.log('有客户端连接...')
// 给客户端发送数据
socket.send('welcome to server');
// message事件,监听客户端发来的数据
socket.on('message',function(data){
console.log('receive messsage form client : '+data);
socket.send('confirm:'+data)
})
})
// 一定要使用httpServer监听端口
server.listen(80);
浏览器端:
<!-- 引入客户端js,此js为服务器运行时动态生成的js --> <script src="/socket.io/socket.io.js" ></script>
<script type="text/javascript"> // 通过io.connect(http://url:port)可以连接到指定地址,返回socket对象 var socket = io.connect("http://127.0.0.1:80"); // 监听连接事件,当连接上会回调此方法 socket.on('connect',function(){ // 给服务器发送数据 socket.send('hello i\'m a new client'); // message事件监听接收的数据 socket.on('message',function(msg){ console.log('from server :'+msg) }) }) socket.on('disconnect',function(){ console.log('disconnect from server...') }) </script>
这样浏览器和socket.io服务器就可以相互实时通信了socket.io 服务器还有一些其他方法
socket.join(StringName,function) // 进入一个房间 socket.leave(StringName,function) // 离开一个房间 socket.broadcast.emit() // 广播,不包括自己 socket.broadcast.to(StringName).emit() // 对某个房间人说话,布包括自己 io.sockets.in(StringName).emit() // 对此房间所有人说话,包括服务器自己 io.sockets.emit() // 对所有房间所有人说话