我正在使用嵌入式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 的信息,但没有关于如何使用而没有的信息......
答案 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