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

时间:2014-06-01 06:39:19

标签: node.js express cryptography openssl socket.io

我正在使用嵌入式sheeva板上的Express和Socket.io开发node.js项目(在busybox Linux上运行node.js 0.10.12)。由于这是嵌入式的,所有内容都是使用稀疏选项构建的,并且没有安装加密内容(node.js已编译--without-openssl)。该服务器将在LAN上使用,不会传输或接收敏感信息,因此不需要加密。

当我使用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和加密功能?

我已经四处搜索并发现了大量关于如何使用 openssl使用Socket.io 的信息,但没有关于如何使用而没有的信息......

1 个答案:

答案 0 :(得分:1)

如果你改变了

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

  , crypto = require('crypto')

  , crypto = null

由于此对象仅用于安全连接 - 这不是一个很好的解决方案,因为您正在修改包含的模块,但它应该可以工作。

我不认为这里实际需要进行修改(但是在您可能会发现需要的测试中):

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