【发布时间】:2018-01-15 16:48:02
【问题描述】:
我已经设置了正常的 socket.io:
客户:
import io from 'socket.io-client'
const socket = io()
socket.on('connect', () => {
console.log('connected')
socket.emit('message', 'I have connected')
})
socket.on('message', (msg) => console.log(msg))
服务器:
import socket from 'socket.io'
const io = socket(/* httpsServer */)
io.on('connection', (socket) => {
console.log('new connection')
socket.on('message', (msg) => console.log(msg))
socket.emit('message', 'This works!')
io.sockets.emit('message', `This doesn't!`)
})
由于某种原因,通过 http 而不是 https 完美地向所有作品发送。通过 https io.sockets.emit 似乎不起作用。我错过了什么吗?
【问题讨论】:
-
检查文件,如果你有带有http链接而不是https的文件,它会给你一个混合内容错误。如果您使用 SSL/HTTPS,则不能在页面上同时使用 http 和 https 文件。阅读更多:developer.mozilla.org/en-US/docs/Web/Security/Mixed_content/…
-
@Jer 都是 SSL。当你发射到一个套接字时它起作用,而不是当你发射到所有时。会不会是命名空间问题?
-
您的控制台有错误吗?这可能是一个命名空间问题,但我不确定。
-
没有错误。如果我在服务器上的
socket:connection之后执行Object.keys(io.sockets.sockets),我会得到一个空数组。但是,如果我执行setInterval几秒钟,然后 `socket.emit 客户端会收到消息,所以它仍然连接并且可以工作。是否有任何理由不存储套接字的引用?
标签: socket.io