node.js - Socket.io 找不到本地主机
问题描述
我正在关注这个基本教程,当我很快发现 socket.io 似乎没有检测到我的 index.html 并且 localhost 给出了错误消息 404。所以也许我输入了错误的东西,因此我从教程中复制了文件,但是同样的问题仍然存在。我错过了什么?
解决方案
Socket.io 本身只响应 socket.io 请求,而不是常规的网页请求。因此,如果您希望您的服务器既可以与 socket.io 一起使用,又可以成为一个常规的 Web 服务器来提供网页服务,那么您需要将一个常规的 Web 服务器与您的 socket.io 代码集成在一起。
socket.io 网站有一个如何使用 socket.io WITH Express 的示例,如下所示。基本概念(来自 socket.io 文档)是这样的:
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('a user connected');
});
server.listen(3000, () => {
console.log('listening on *:3000');
});
推荐阅读
- android - Flutter:应用启动后如何获取 NFC 消息
- architecture - 如何重构与许多其他类有依赖关系的大类?
- ios - 带有凭据的HttpClient帖子在离子ios应用程序中不起作用
- java - 为什么我们要在 Kotlin/Android 中“获得稳定的参考”?
- xcode - 我在哪里可以在 Xcode 12 的应用内购买功能中启用开关?
- asp.net-core - 使用 HttpClient 发布 MultipartFormDataContent 请求在将内容复制到流时出错
- eclipse - 将热键添加到 Eclipse
- ruby-on-rails - 大文件上传时 CSRF 保护的性能问题
- php - AJAX 将变量传递给 PHP
- r - ifelse 在 ggplot2 中设置不同的参数