javascript - Socket.io 节点服务器无法向电子应用程序发出事件
问题描述
我刚刚按照https://socket.io/get-started/chat的入门教程进行操作。它适用于浏览器上的 Web 客户端。但它不会向电子客户端发出任何事件。任何控制台中都没有错误消息。它只是不会将电子应用程序中的套接字连接到 socket.io 服务器。
问题似乎是 io.emit() 方法,注释该行使电子客户端可以成功连接到 socket.io 服务器。
这是nodejs服务器的代码:
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');
socket.on('chat message', (msg) => {
//io.emit('chat message', msg);
console.log(msg);
});
});
server.listen(3000, () => {
console.log('listening on *:3000');
});
这是电子应用程序的 preload.js 的代码:
const io = require("socket.io-client");
const socket = io('http://localhost:3000');
socket.on('connect', () => {
console.log('you are connected!');
});
window.addEventListener('DOMContentLoaded', () => {
var messages = document.querySelector('#messages');
var form = document.querySelector('#form');
var input = document.querySelector('#input');
form.addEventListener('submit', function (e) {
e.preventDefault();
if (input.value) {
socket.emit('chat message', input.value);
input.value = '';
}
});
})
解决方案
推荐阅读
- r - 创建一个数据帧,其中包含一个数据帧中不在另一个数据帧中的行
- firebase - 如何修复错误:“用户”类型的值?不能分配给“用户”类型的变量
- php - 我不知道如何通过循环在单元格内输入有序数字
- reactjs - React with Material-UI Modal - 将所有 Modal 放在 App 中,但如何从 App 访问 Redux Store?
- nginx - API 网关/代理配置中 API 访问令牌的 NGINX 服务调出
- javascript - 努力等待 for 循环
- c# - .net Core 3.1 - 第一页询问语言然后重定向到一个页面
- node.js - 不和谐 Node.js | 将时间添加到嵌入中的时间戳 (v12)
- python - 在 Python 中使用 HTMLParser 提取超链接 URL 和内容
- typescript - vue3 在编辑器本身内将 quill delta 转换为 html