首页 > 解决方案 > 带有 WebSockets 的 Nuxt JS

问题描述

我有一个 Nuxt 应用程序,其中一项服务需要通过 WebSockets 交付。Nuxt App Server 使用 express 提供 api 服务。

我有一个 /api 文件夹,其中有各种 *.js 文件,这些文件已成功路由。IE...

const express = require('express');
const app = express();

app.get('/whatever1',(req, res) => console.log('req.url',req.url))

工作正常。

但是,在同一文件中的以下内容将永远无法到达....

const express = require('express');
const app = express();
const expressWs = require('express-ws')(app);

app.ws('/whatever2',(ws,req) => {
    console.log('req.url',req.url);
})

我哪里错了?

标签: javascriptnode.jsnuxt.js

解决方案


您正在尝试将客户端连接到服务器上不存在此类端点的端点。在客户的输出中,您收到以下错误:

VM1295:1 WebSocket connection to 'ws://localhost:3000/api/whatever2' failed: Connection closed before receiving a handshake response

因为你还没有定义 /api/whatever2 的路由。您上面的代码路由到:

 ws://localhost:3000/whatever2

代替ws://localhost:3000/api/whatever2

编辑:

这是对我有用的测试代码:

const express = require('express');
var app = express();
const expressWS = require('express-ws')(app);

expressWS.getWss().on('connection', function (ws) {
    console.log('connection open');
});

app.ws('/whatever', (ws, res) => {

    console.log('socket', ws);
});

app.listen(3000, () => console.log('listening on 3000...'));

推荐阅读