如果node.js编译时没有使用openssl,可以在node.js上使用Socket.io吗?

我正在使用Express和Socket.io在embedded式sheeva主板(运行在busybox Linux上的node.js 0.10.12)上运行node.js项目。 由于这是embedded式的,所有东西都是用稀疏的选项构build的,没有安装encryption的东西(node.js被编译–without-openssl)。 该服务器将在局域网上使用,不会传输或接收任何敏感信息,因此不需要encryption。

当我用node运行这个脚本时:

var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(3000); 

节点失败,输出如下:

 tls.js:67 throw new Error('node.js not compiled with openssl crypto support.'); Error: node.js not compiled with openssl crypto support. at tls.js:67:9 at NativeModule.compile (node.js:892:5) at NativeModule.require (node.js:861:18) at https.js:22:11 at NativeModule.compile (node.js:892:5) at Function.NativeModule.require (node.js:861:18) at Function.Module._load (module.js:297:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/usr/share/nodeserver/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/WebSocket.js:10:13) 

这是预料之中,因为节点编译没有openssl的支持。 跟踪/usr/share/nodeserver/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/WebSocket.js的错误,这是导致问题的线路:

 https = require('https') 

我知道我不能简单地评论一下。 有没有办法告诉Socket.io不使用任何https和encryptionfunction?

我search了四周,发现了如何使用openssl的Socket.io大量的信息,但没有关于如何使用它没有

如果你改变

https://github.com/websockets/ws/blob/master/lib/WebSocketServer.js#L10

  , crypto = require('crypto') 

  , crypto = null 

由于这个对象只用于安全连接 – 当你修改一个包含的模块时,这不是一个好的解决scheme,但它应该可以工作。

我不认为在这里实际需要修改(但在testing中,你可能会发现你需要):

https://github.com/websockets/ws/blob/master/lib/WebSocket.js#L13 https://github.com/websockets/ws/blob/master/lib/WebSocket.js#L572