当前位置: 首页 > 知识库问答 >
问题:

socket.io连接在生产环境中失败,在本地主机中工作

韩华美
2023-03-14

我在服务器中有这个.js

//socket io config
const server = require('http').createServer(app)
const io = require('socket.io')(server)
io.on('connection', function (socket) {
  socket.on('SOCKET_COMMENT_RECEIVED', ({ notification }) => {
    io.emit(`SOCKET_COMMENT_RECEIVED`, notification)
  })
  //and many more
})

在我的客户中(反应)

import io from 'socket.io-client'
const socket = io('localhost:3001') // working in localhost

在我的督促下,我做了这项检查

let socket = io('localhost:3001')
if(process.env.NODE_ENV === 'production') { socket = 
  io('https://api.example.com:3001') 
}

为什么会这样呢?我不认为这是cors的问题,因为我已经做了

app.use(cors({
  origin: true,
  credentials: true
}))

我的package.json

"socket.io": "^2.1.1",
"socket.io-client": "^2.1.1",

共有1个答案

谢裕
2023-03-14

在您的服务器代码中,请添加以下行

io.set('origins', '*:*');

所以你的代码将是

  //socket io config
  const server = require('http').createServer(app)
  const io = require('socket.io')(server)
  io.set('origins', '*:*');
  io.on('connection', function (socket) {
    socket.on('SOCKET_COMMENT_RECEIVED', ({ notification }) => {
      io.emit(`SOCKET_COMMENT_RECEIVED`, notification)
    })
    //and many more
  })

如需更多帮助,请遵循本教程

源代码可以在这里找到。

希望这能帮助你!!

 类似资料:
  • 在本地,裸机、两个独立的“服务”通过gRPC连接、客户端和“后端”成功地相互通信。两者都是使用gRPC传输实现的NestJS应用程序。 当部署在kubernetes(minikube)环境中时,我得到错误:14不可用:没有在客户端建立连接。后端侦听本地主机:50051(端口从k8服务公开),前端尝试连接引擎svc。违约svc。簇本地:50051,其中直到点的第一部分是服务名称,我已经找到它以确保这

  • 我运行的是Apache Tomcat8.5。启动tomcat后,我在浏览器地址栏中输入地址,但会出现以下错误: 如何解决此错误并使tomcat正常运行?

  • > 我在Linux机器上安装了Spark。版本为spark-1.6.2-bin-hadoop2.6.tgz. 然后使用。/sbin/start-all.sh启动Spark 我尝试在Eclipse中运行javaWordCount.java示例。但总是失败。有人能帮我吗? 例外情况如下:

  • 下面的代码摘自rabbitmq教程(http://www.rabbitmq.com/tutorials/tutorial-one-python.html) 它可以工作,但如果我用自己的计算机或同一网络中的计算机的ip更改localhost: 我不知道为什么,我应该在连接中改变一些东西吗?

  • 我正在尝试执行gmapsapi密钥的第一个示例https://developers.google.com/maps/documentation/javascript/tutorial?hl=es-419 在localhost的示例网站中,但地图没有加载。该API密钥是正确的,并与我的谷歌项目检查。

  • 我正在开发一个使用Springboot、Boxfuse和Flyway的Web应用程序。我创建了以下迁移: V10__更新属性。sql 其中包含以下内容: 并将@Lob注释添加到Java属性longDescription中: 当我在本地运行应用程序时,它就可以工作了。但当我运行boxfuse命令时: 它失败了。。。。我得到以下错误: (调用init方法失败;嵌套异常为org.flywaydb.cor