首页 > 解决方案 > Websockets 可能会干扰 Travis-CI

问题描述

我已经四处搜索,但无法找到与我的问题相关的任何具体问题。缺乏问题让我相信这是我的特定构建的问题。

我最近将 socket.io 添加到一个辅助项目中,只是为了稍微试验一下 websockets。在添加 socket.io 之前,我的 Travis 构建将没有问题;但是,我的 Travis 构建的 post-sockets 将遍历动作并显示通过测试,直到 10 分钟超时。

我正在使用 Node 和 React。我正在运行的测试命令是"test": "react-scripts test --env=jsdom"测试套件只是对组件的基本冒烟测试和一些内容检查。如果需要,我可以共享测试套件,但由于测试都显示在 Travis 中通过,我认为没有必要共享。

什么会导致我的 Travis 构建挂起?据我在研究中发现,除非您直接测试套接字,否则它们不应该干扰 Travis。我还没有为套接字或使用它们的任何组件添加任何测试。

这是我的server.js:

const express = require("express");
const bodyParser = require("body-parser");
const path = require("path");
const passport = require('passport')
const PORT = process.env.PORT || 3001;
const changeCat = require("./utils/randomCat");
const routes = require("./routes");
const authCheckMiddleware = require("./server/middleware/auth-check");
const FacebookTokenStrategy = require('passport-facebook-token');
let config;
if(process.env.MONGODB_URI) {
  config = process.env
} else {
  config = require("./config/index");
}

const app = express();

//...server logic...//

const server = app.listen(PORT, function() {
  console.log(` ==> Server now on port ${PORT}!`);
});

let user = {
  userCount: 0,
  activeUsers: 0
};
const io = require("socket.io").listen(server);
io.on('connection', (socket) => { 
  user.userCount++;
  socket.emit("broadcast", user);

  socket.on("disconnect", () => {
    user.userCount--;
    user.activeUsers--;
    socket.emit("broadcast", user);
  });

  socket.on("deactivateUser", () => {
    user.activeUsers--
    socket.emit("broadcast", user);
  });

  socket.on("activateUser", () => {
    user.activeUsers = user.userCount
    socket.emit("broadcast", user);
  });

  setInterval(() => socket.emit("broadcast", user),1000);

  socket.on("error", err => {
    console.log(`Received error from user: ${socket.id}`);
    console.log(err);
  });

  socket.on('connect_failed', err => {
    console.log(err)
    console.log("connect failed")
  });
});

最后,我的.travis.yml

language: node_js

node_js:
  - "stable"

before_script: 
  - cd client
  - npm install

script:
  - npm run test

项目简介:它基本上是一个测验应用程序,每 5 分钟运行一次测验,每次都有不同的类别。

编辑@1:25P 编辑标题

标签: javascriptnode.jsreactjssocket.iotravis-ci

解决方案


推荐阅读