Javascript 如何实现快速ws-route

Javascript 如何实现快速ws-route,javascript,node.js,express,websocket,Javascript,Node.js,Express,Websocket,更新: 我需要正确设置express ws: const express = require('express'); let expressWs = require('express-ws'); expressWs = expressWs(express()); const app = expressWs.app; const router = express.Router(); const createError = require('http-errors'); const path =

更新:

我需要正确设置express ws:

const express = require('express');
let expressWs = require('express-ws');
expressWs = expressWs(express());
const app = expressWs.app;
const router = express.Router();

const createError = require('http-errors');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
...
const playerHeadingRouter = require('./routes/playerHeading')(router, db);
连同我的路线模块:

module.exports = (router, db) => {
  router.get('/api/player/:id', (req, res, next) => {
    res.end();
  });

  router.ws('/api/player/:id', (ws, req) => {
    ws.on('message', function(msg) {
      const coords = JSON.parse(msg);
      db.any(`UPDATE "user" SET x = ${coords.x} WHERE id = ${req.params.id}`)
      db.any(`UPDATE "user" SET y = ${coords.y} WHERE id = ${req.params.id}`)
      db.any(`UPDATE "user" SET geom = ST_SetSRID(ST_MakePoint(x, y),27700) WHERE id = ${req.params.id}`)
        .then(() => {
          // success;
          console.log('msg', msg);
        })
        .catch(error => {
          // error;
          console.log('error', error);
        });
    });
    // socket
  });
}
现在,当我使用chrome websockets客户端时,我可以建立到以下位置的连接:

ws://localhost:3001/api/player-heading/2

并从我的express服务器发送一条用于DB查询的消息。

如果您托管的是websocket端点,您将无法通过HTTP访问它。您需要使用websocket客户端连接到ws://端点。您可以使用Chrome扩展插件来执行此操作。

谢谢。尝试打开ws://localhost:3001/echo会给我一个“未定义”的提示。您的第二个代码段设置为echo客户端发送的任何内容。如果您从客户端发送消息,消息是否返回?请查看更新。我现在可以建立连接,并且可以通过您提到的浏览器插件将数据发送到express服务器。再次感谢。