javascript - 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 编辑标题
解决方案
推荐阅读
- ejb-3.1 - EJB 计时器服务: WTRN0006W: 事务 xxxx 在 120 秒后超时
- javascript - Electron desktopCapturer.getSources().then 不是函数
- python-3.x - 根据行号检索文本
- razor - 导航栏下的固定标题
- android - 搜索 ListView 不起作用 - 为什么?
- c# - 中断声明问题 - sonarqube
- node.js - OpenShift服务/托管不适用于具有反应静态文件的节点js应用程序
- java - 第二次做鼠标是不可能的(矩形是未定义的)
- c++ - 字符串不会使用 reverse_copy 反转
- google-apps-script - 错误 429 在创建新的 Apps 脚本项目时资源已用尽(例如检查配额)