Mis*_*r M 7 javascript sockets node.js socket.io
我正在使用简单的 socket.io 2.0.3 服务器,没有 express 或任何类似的东西来在我的 Laravel 应用程序中运行简单的聊天功能。
一切都运行良好,直到我决定将网站切换到 HTTPS。现在 socket.io 拒绝连接(ERR_CONNECTION_CLOSED)。
这是我最简单的设置:
服务器.js:
var io = require('socket.io')(8080, {
origins : //some stuff
});
Run Code Online (Sandbox Code Playgroud)
HTML文件
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
var socket = io(':8080');
//more stuff
Run Code Online (Sandbox Code Playgroud)
我在服务器文件夹、intermediate.crt、domain.com.crt 和 domain.com.key 中有所有需要的证书文件
有人可以用最简单的例子来帮助如何在 https 上进行这项工作吗?提前致谢!
编辑:需要不使用 Express 的可能解决方案。
我无法用简单的 socket.io 代码编写它,所以我最终还是使用了 express。
如果将来有人需要,这是最简单的工作代码:
服务器.js
var express = require('express');
var app = module.exports = express();
var https = require('https');
var fs = require('fs');
var server = https.createServer({
key: fs.readFileSync(/*full path to your key*/),
cert: fs.readFileSync(/*full path to your cert*/),
ca: fs.readFileSync(/*full path to your intermediate cert*/),
requestCert: true,
rejectUnauthorized: false
},app);
server.listen(8080); //listen on port 8080
var io = require('socket.io').listen(server);
io.set('origins', /*your desired origins*/);
io.set('transports', ['websocket',
'flashsocket',
'htmlfile',
'xhr-polling',
'jsonp-polling',
'polling']);
var sockets = {};
//your socket logic
Run Code Online (Sandbox Code Playgroud)
在 HTML 中:
var socket = io(':8080',{secure: true});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6684 次 |
| 最近记录: |