【问题标题】:Socket.IO + Node.js + SSLSocket.IO + Node.js + SSL
【发布时间】:2012-09-19 06:48:47
【问题描述】:

我想使用 Node.js (0.5.11) 和 Socket.IO 运行简单的聊天。我一直在使用纯 HTTP,但我需要启动 SSL。 我在 wiki 中生成了密钥和证书:http://nodejs.org/api/tls.html#tls_tls_ssl

我使用的代码:

app.js:

var tls = require('tls');
var fs = require('fs');

var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem'),
};

var server = tls.createServer(options, function(cleartextStream) {
  console.log('server connected',
              cleartextStream.authorized ? 'authorized' : 'unauthorized');
  cleartextStream.write("welcome!\n");
  cleartextStream.setEncoding('utf8');
  cleartextStream.pipe(cleartextStream);
});
server.listen(8000, function() {
  console.log('server bound');
});

服务器启动良好。当我想在 index.php 上引用 socket.io 时,问题就开始了:

<script src="https://localhost:8000/socket.io/socket.io.js"></script>

Firebug 给我状态 Aborted 并且我不能使用“io”对象,因为它没有加载。我还在 src 属性中尝试了“http://local...”,但没有任何变化。 我究竟做错了什么? 谁能给我一个建议或好的教程如何使用 SSL 运行 Socket.IO?

谢谢你的回复

【问题讨论】:

  • tls.createServer 与 https.createServer 不同。你真正需要哪一个?
  • 我需要 https,因为我需要在聊天中发送加密数据。
  • 您是否尝试过使用 https.createServer 而不是 tls.CreateServer?
  • 将名称从“tls”更改为“https”不会改变任何内容,并且尝试 require('https') 不起作用
  • 它应该可以工作:nodejs.org/docs/v0.5.10/api/https.html

标签: node.js socket.io ssl


【解决方案1】:
<script src='/socket.io/socket.io.js'></script>

您只需要它,因为它会自动发现,以防万一您在连接到另一个地址时忘记更新端口和地址。

socketio 包含在您的服务器中的什么位置? 好像是这个问题

var sockio = require("socket.io");
var io = sockio.listen(server);

【讨论】:

  • 如果“客户端”没有安装 SocketIO,它如何自动发现。它需要从服务器下载。我需要检查您的代码,但我现在不能这样做,明天我会回复。谢谢!
  • 你在客户端使用的socketio js文件是由节点服务器自动发送的,只要在stackoverflow上搜索,这个问题就可以看到很多。并在发送和获取数据(确认)中查看此socket.io/#how-to-use
猜你喜欢
  • 2013-05-27
  • 1970-01-01
  • 2018-06-29
  • 2011-09-29
  • 2015-08-20
  • 2017-05-24
  • 2016-06-06
  • 2013-02-25
  • 2017-07-27
相关资源
最近更新 更多