Node.js、socket.io https 连接

2024-01-22

服务器端代码:

var io = require('socket.io').listen(8150);
io.sockets.on('connection', function (socket){

});

客户端代码:

var socketIO = io('*.*.*.*:8150');
socketIO.once('connect', function(){

});

在 http 上,它在未连接的同一页面中的 https 上工作。 搜索了很多例子,但都是express的例子。我不在node.js中创建任何http服务器,只需要socket.io工作。


当通过 HTTPS 运行客户端时,socket.io 也会尝试通过 HTTPS 连接到您的服务器。目前您的服务器仅接受 HTTP 连接,listen(port)功能不支持HTTPS。

您需要创建一个 HTTPS 服务器,然后将 socket.io 附加到它,就像这样。

var fs = require('fs');

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

var app = require('https').createServer(options);
var io = require('socket.io').listen(app);
app.listen(8150);

io.sockets.on('connection', function (socket) {

});

如果您同时需要 HTTP 和 HTTPS,您可以启动两个服务器并将 socket.io 连接到这两个服务器。

var fs = require('fs');

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

var httpServer = require('http').createServer();
var httpsServer = require('https').createServer(options);
var ioServer = require('socket.io');

var io = new ioServer();
io.attach(httpServer);
io.attach(httpsServer);
httpServer.listen(8150);
httpsServer.listen(8151);

io.sockets.on('connection', function (socket) {

});

然后在客户端,您可以根据页面是通过 HTTP 还是 HTTPS 访问来确定连接到哪个端口。

var port = location.protocol === 'https:' ? 8151 : 8150;
var socketIO = io('*.*.*.*:' + port);
socketIO.once('connect', function() {

});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js、socket.io https 连接 的相关文章

  • 使用 TortoiseGit 创建 git 克隆时出现 SSL 证书问题

    我想在 TortoiseGit 的帮助下克隆 git 存储库 但出现错误 错误 SSL 证书有问题 请验证 CA 证书是否正常 细节 错误 14090086 SSL 例程 SSL3 GET SERVER CERTIFICATE 访问时证书验
  • Mongodb更新很多

    我正在使用express js 和 npm 模块 mongodb 进行开发 并以 mongodb 作为数据库 我有两个集合 即 用户 和 活动 一个用户可能有数千个活动 首先 我将用户的 id 姓名和图片 url 存储到 关系的活动文件 请
  • nodejs mocha suite 未定义错误

    我正在尝试使用摩卡运行一些测试 但似乎无法克服这个错误 E tdd nodejs cart gt mocha cart test js node js 201 throw e process nextTick error or err Re
  • 使用 VirtualDocumentRoot 的 SSL 虚拟主机

    我在 ubuntu 16 04 VM 上进行开发工作 当我处理多个项目时 为了让我的生活更轻松 我使用 VirtualDocumentRoot 和主机文件使用 dev 域从我的主文件夹中服务器站点 在 000 default conf 我有
  • express 或express-generator:我需要两者吗?

    只是探索 Node js 并遇到了 Express 在 npm 存储库站点上https www npmjs com package express https www npmjs com package express它明确指出安装是 np
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • 如何使用 Karma 测试 NodeJS 后端代码(testaulous)

    如何设置 Karma 来运行我的后端单元测试 用 Mocha 编写 如果我将后端测试脚本添加到files 它未能说明require未定义 你不知道 Karma 仅用于测试基于浏览器的代码 如果您的项目在后端有 mocha 测试 在前端有 k
  • 如何在 Node-Red 中的 oneditsave 之后在下拉列表中显示先前选择的值(动态)?

    我有一个自定义节点 其中包含两个彼此独立的下拉菜单 因此 第二个下拉列表值会根据第一个下拉列表中选择的值发生变化 我现在尝试的是 用户拖动我的自定义节点 iotinput 从两个拖放中选择值 按下并单击 完成 他再次拖动另一个自定义节点 i
  • Android 2.3.4 SSL问题

    升级到 Android 2 3 4 后 出现以下异常 javax net ssl SSLException Read error ssl 0x I O error during system call Connection timed ou
  • JITSU 无法安装 OSX [节点 0.8.17 和 NPM 1.2.0] WTF

    我在通过 NPM 安装 jitsu 时遇到问题 我在 mac osx 10 6 8 上安装了节点 0 8 17 和 NPM 1 2 0 当我跑步时 sudo npm install jitsu g 首先它警告未找到自述文件 npm WARN
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Node.js 中的异步或步骤

    我无法让我的异步代码与 node js 一起使用 尝试异步和步骤库 代码仅返回第一个函数 似乎没有执行其余函数 我究竟做错了什么 thanks var step require step step function f1 console l
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • 无法在适当的时间对域调用 dispose

    我有一个问题domain模块 目前 我正在尝试捕获请求中引发的任何未捕获的错误 使用express中间件和域 所有请求在调用之前都会通过此函数路由next并继续走正确的路线 app use req res next gt domain cr
  • 从自己的 gitlab 服务器安装节点模块

    我想从我们的 gitlab 服务器安装节点模块 这是存储库的链接 http ABCD GITLAB myGroup myNodeModule git http ABCD GITLAB myGroup myNodeModule git 根据n
  • 如何针对 Node.js 中发生的每个错误发送电子邮件?

    假设我的 node js 应用程序正在运行 如果出现错误 我的意思是所有错误 不仅仅是网络错误 如果出现错误 则很重要 我如何调用函数向我发送电子邮件 基本上 在我希望它写入 err out 之前 我希望向我发送一封电子邮件 我正在使用no
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • SSL 适用于浏览器、wget 和curl,但不适用于 git

    我有一个网站 用于托管 redmine 和几个 git 存储库 这非常适合 http 但我无法使用 https 进行克隆 即 git clone http mysite com git test git 工作正常 但是 git clone

随机推荐

  • 在javascript中添加两个大数字[重复]

    这个问题在这里已经有答案了 我一直在尝试使用 javascript 添加以下数字 76561197960265728 912447736 遗憾的是 由于 JavaScript 中的四舍五入 它不会得到正确的数字 我需要该数字作为字符串 我尝
  • 在 Brave 中发送 XMLHttpRequest 时,引用者的这种行为是有意的吗?

    var xhr new XMLHttpRequest xhr open GET https httpbin org true xhr send 当运行上面这个简单的代码时example org Chrome devtools 中的请求标头显
  • Bootstrap 4 卡相同高度和底部对齐

    我正在尝试对齐 Bootstrap 4 卡并使用d flex随着align self stretch对于卡片本身 这太棒了 但是 我不知道如何让红色边框的部分浮到底部 使用 Bootstrap 4 的任何想法公用事业 https getbo
  • 如何使用 Kivy 获取文本输入的值

    我是 Kivy 的新手 因为我无法在 PySide 上练习 一些动态库损坏了或者我不知道是什么 所以我想尝试这个巨大的工具 我现在迷路了 我尝试这样做 在 Kivy 应用程序中获取文本输入值 https stackoverflow com
  • gsub 或 scan 中的匹配位置

    实现匹配位置的最佳方法是什么 由 对于使用时的每场比赛gsub or scan hello gsub Regexp last match offset 0 first gt 01234 See 正则表达式 last match http w
  • 使用谷歌地图上的 pincode 获取纬度和经度

    我需要加载给定 pin 码或区号的 Google 地图位置 我尝试使用地理编码器方法来查找给定地址的纬度和经度 当给定位置或区域但不适用于密码 特别是印度 时 此功能有效 有没有任何方法或途径可以使用 pincode 查找给定区域的纬度和经
  • Excel,将总和应用于多列上的某些单元格

    Excel 将总和应用于多列上的某些单元格 A B C D A 1 2 3 4 B 1 2 3 4 C 1 2 3 4 D sum A1 A2 A3 so A4 3 我们如何将总和分别应用于 B C D 列上的 4 个 B C D 您需要动
  • Google 电子表格 - 将多列转换为一列

    我想循环遍历 Google 电子表格中的一组行 如下所示 XXX 123 234 234 YYY 789 098 765 ZZZ 76 123 345 最终结果需要是 XXX 123 XXX 234 XXX 234 YYY 789 YYY
  • Python局部变量初始化

    我对 python 相当陌生 我想知道局部变量是如何工作的 让我们从一个简单方法的示例开始 def do sth local dict a 1 b 2 c 3 我们假设 local dict 的使用方式类似于 const 变量 问题是 每次
  • 这个要点
  • 没有以圆圈显示是什么?
  • 我试图在我的网页上显示一些项目符号列表圆圈 但它似乎没有显示 我尝试使用 firebug 但我找不到问题所在 我浏览了整个 css 文件 但我没有不知道问题出在哪里 我希望列表与圆圈垂直 请你帮我 这是代码 Browser resets h
  • 安全套接字连接的最佳实践

    安全套接字连接 无 SSL 的最佳实践是什么 我将通过 TCP 套接字连接移动敏感数据 登录名 密码 帐户 并想知道是否有一种好的 快速的加密 解密方法并避免恶意注入 如果您对 SSL 过敏 请使用 SSH 但原理是相同的 密钥通过非对称算
  • options 参数中可选参数的默认值

    我想传递一个对象作为类构造函数的参数 选项对象的某些键是可选的 在打字稿中是否有更好 更惯用的方法来完成以下任务 谢谢 class Car color number numberOfWheels number constructor opt
  • Python Seaborn 图表 - 阴影区域

    抱歉我的菜鸟问题 但是如何在seaborn图表的上下线之间添加阴影区域 颜色 我正在处理的主要代码如下 plt figure figsize 18 10 sns set style darkgrid palette sns color pa
  • 如何修复“未找到初始内容”错误?

    在客户端的一些代码上使用 Flash Builder 4 6 单击调试 也尝试运行 并收到此错误 Process terminated unexpectedly initial content not found Launch comman
  • 如何在使用通配符的目录指令中使用 apache2 mod_rewrite?

    我编写了一个 Web 应用程序 在托管该 Web 应用程序的专用服务器下运行 此 Web 应用程序的实例可在不同的域中使用 每个域都有自己的 Web 应用程序文件副本 允许根据需要进行自定义 我在 Debian Squeeze 下运行 Ap
  • Google Sign in API - 获取照片 Uri 为空

    我使用 Google Sign in API 来请求用户个人资料 例如用户显示名称 头像照片 我有null值 GoogleSignInAccount getPhotoUrl 获取值 GoogleSignInAccount getDispla
  • 检测 PHP 代码块的超时

    如果 PHP 中的代码块花费太长时间 有没有办法可以中止该代码块 也许是这样的 Set the max time to 2 seconds time new TimeOut 2 time gt startTime sleep 3 time
  • React 无法更新状态

    I can t figure why I can t update my state see setCoords The request returns with a 200 code and the elements I m trying
  • 如何列出詹金斯管道脚本中目录中的所有目录

    我想从詹金斯管道脚本中获取特定目录中存在的所有目录 我们应该怎么做 如果您想要特定目录下的所有目录的列表 例如mydir使用 Jenkins Utility 插件你可以这样做 假设mydir位于当前目录下 dir mydir def fil
  • Node.js、socket.io https 连接

    服务器端代码 var io require socket io listen 8150 io sockets on connection function socket 客户端代码 var socketIO io 8150 socketIO