你不需要 Express 就可以开始使用 socket.io
开始使用 socket.io 的最佳地点是他们的网站。访问后,你会看到一个示例应用,演示了如何使用 socket.io。
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
如果您对 Node.js 还不熟悉,您可能会觉得需要 Express 才能使用 socket.io。在上面的例子中,他们引入了 Express 来提供索引文件,该文件将成为套接字服务器的客户端应用程序。上述方法本身并没有错,但如果您不了解 Express,那么在使用 socket.io 之前,您还需要学习一点东西。
如果他们不在示例中引入额外的库就更好了。Socket.io 有另一个使用 Node.js http 服务器的示例。
var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');
app.listen(80);
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);
res.end(data);
});
}
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
但即使这样也有点过分了。我更喜欢服务器和客户端分开。所以这就是我的服务器。
const io = require("socket.io");
const server = io.listen(3000);
server.on("connection", function(socket) {
console.log("user connected");
socket.emit("welcome", "welcome man");
});
客户端将包括 socket.io 客户端库和纯 html。
<html>
<head>
<title>Socket io client</title>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
var socket = io("http://localhost:3000");
// use your socket
socket.on("welcome", (message) => {
// do something with the message.
})
</script>
</head>
<body>
</body>
</html>