javascript - 无法使用快速服务器连接到 socket.io
问题描述
我正在尝试使用以下代码创建 WebSocket。
const express = require('express')
const app = express()
const http = require('http')
const server = new http.createServer(app)
const io = require('socket.io')(server)
const CONFIG = {
host: 'localhost',
port: 4444
}
io.on('connection', function (socket) {
const sid = socket.id
console.log('connection socket id:', sid)
for (const msg of ['disconnect', 'disconnecting', 'error']) {
socket.on(msg, data => {
console.log(`* ${msg}:`, data)
})
}
socket.on('join', data => {
console.console.log("data", data)
})
socket.on('signal', data => {
console.log('signal', data)
})
})
server.listen({
host: CONFIG.host,
port: CONFIG.port,
}, info => {
console.info(`Running on`, server.address())
})
当我尝试使用它进行测试时,https://www.websocket.org/echo.html
我收到了一个未定义的错误。
我已经ws://127.0.0.1:4444
在位置字段中给出,但是当我尝试连接时,我在日志中收到以下错误:
ERROR: undefined
并在消息中Connection closed before receiving a handshake response
这里有什么问题我怎样才能使它工作?
解决方案
您的服务器看起来不错,您应该自己实现客户端。
文档中的 Socket.IO 服务器和客户端示例。
服务器:
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
socket.on('message', (msg) => {
console.log('message: ' + msg);
});
});
http.listen(3000, () => {
console.log('listening on *:3000');
});
客户端(index.html):
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function () {
var socket = io();
socket.emit('message', 'Test message.');
});
</script>
推荐阅读
- jquery - 未知数量的 $.get 请求;如何有效上链?
- javascript - XMLHttpRequest 通过 onReadyStateChange 接收 2 个响应
- c# - 是否有代码可以让我在 linq 中获取以下 sql 查询的结果?
- javascript - 从子组件和父组件中的数组映射数据
- c# - Nopcommerce 视图未更新
- java - JVM 的 GuardedString 和内存持久性
- html - 如何在保持纵横比的同时在 CSS 中放大 Img?
- ruby-on-rails - 如何在创建循环 Rails/Ruby 中引用先前创建的对象
- javascript - 画布上下文属性以防止硬件加速渲染?
- python - 如何通过考虑前 2 个观察值的平均值来填充 NaN 值