你不需要 Express 就可以开始使用 socket.io

2025-06-10

你不需要 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>
鏂囩珷鏉ユ簮锛�https://dev.to/sadick/you-dont-need-express-to-get-started-with-socketio-4ieg
PREV
JavaScript/Typescript 中 ? 和 ?? 的区别
NEXT
讨厌你不使用的语言