小编ome*_*rts的帖子

Socket.io,为什么需要一个http服务器?

从Socket.IO lib(或任何其他示例)查看以下示例:

// note, io(<port>) will create a http server for you
var io = require('socket.io')(80);

io.on('connection', function (socket) {
  io.emit('this', { will: 'be received by everyone'});

  socket.on('private message', function (from, msg) {
    console.log('I received a private message by ', from, ' saying ', msg);
  });

  socket.on('disconnect', function () {
    io.emit('user disconnected');
  });
});
Run Code Online (Sandbox Code Playgroud)

似乎Socket.IO总是依赖于http服务器,它会为你创建一个,就像上面的例子一样.

由于websockets不是HTTP,为什么需要http服务器?如果它只是为了后备,为什么它如此集成?

javascript websocket socket.io

5
推荐指数
1
解决办法
1769
查看次数

Webpack ContextReplacementPlugin 从node_modules获取包

我们正在尝试制作一个 webpack 捆绑包,它将在单个捆绑包中包含我们的所有依赖项。

有一个特定的包,它有来自node_modules的动态需求,而webpack无法在编译时正确解析该包。

生成错误的代码是:

// config.middlewares is a list of packages inside node_modules
Object.keys(config.middlewares).forEach(function (moduleName) {
  var pkg = require(moduleName)
  var alias = config.middlewares[moduleName]
  helmet[alias] = pkg
})
Run Code Online (Sandbox Code Playgroud)

Webpack 将其编译为:

Object.keys(config.middlewares).forEach(function (moduleName) {
  var pkg = !(function webpackMissingModule() { var e = new Error("Cannot find module \".\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())
  var alias = config.middlewares[moduleName]
  helmet[alias] = pkg
})
Run Code Online (Sandbox Code Playgroud)

因此,我们尝试使用 Webpack 的 ContextReplacementPlugin,但无论我们尝试什么,我们都无法将其配置为更改上下文以从 node_modules 获取文件。

我们尝试过的一些事情(我们首先尝试获取一个特定的包,称为 hsts):

new ContextReplacementPlugin(/helmet.*/, /\.\.\/hsts/)
new ContextReplacementPlugin(/helmet.*/, /\.\/\.\.\/hsts/)
new ContextReplacementPlugin(/helmet.*/, /\.\/\.\.\/hsts\/index\.js/)
```
Run Code Online (Sandbox Code Playgroud)

node.js webpack

5
推荐指数
0
解决办法
1056
查看次数

标签 统计

javascript ×1

node.js ×1

socket.io ×1

webpack ×1

websocket ×1