我的websocket在localhost上运行良好。但是当我在railway app上部署我的项目时,它无法运行
(使用https)
它在控制台日志中显示此错误:
第一个错误-""(索引):382混合内容:"https://supreme-key-production.up.railway.app/rooms/bangladesh_ott/"处的页面已通过HTTPS加载,但尝试连接到不安全的WebSocket终结点" ws://supreme-key-production.up.railway.app/ws/bangladesh_ott/"。此请求已被阻止;此终结点必须通过WSS可用。第二个错误-""(index):382未捕获DOMException:无法构造"WebSocket":无法从通过HTTPS加载的页启动不安全的WebSocket连接。请在window. onload(https://supreme-key-production.up.railway.app/rooms/bangladesh_ott/:382:24)"""
这是我的剧本:窗口. onload =函数(){const房间名称= JSON. parse(文档. getElementById('json-room名称'). textContent);const用户名= JSON. parse(文档. getElementById('json用户名').文本内容);const聊天套接字=新的网络套接字('ws://'+ www.example.com +'/ws/'+房间名称+'/');window.location.host + '/ws/' + roomName + '/' ); chatSocket.onmessage = function(e) { console.log('onmessage')
const data = JSON.parse(e.data);
if (data.message) {
let html = '<div class="message">';
html += '<p class="messsage_username">' + data.username + '</p>';
html += '<p class="message_message">' + data.message + '</p></div>';
document.querySelector('#chat-messages').innerHTML += html;
} else {
alert('The message was empty!');
}
}
chatSocket.onclose = function(e) {
console.log('onclose')
}
//
document.querySelector('#chat-message-submit').onclick = function(e) {
e.preventDefault();
const messageInputDom = document.querySelector('#chat-message-input');
const message = messageInputDom.value;
chatSocket.send(JSON.stringify({
'message': message,
'username': userName,
'room': roomName
}));
messageInputDom.value = '';
return false;
}
}
'''
有什么解决办法吗?
1条答案
按热度按时间zzzyeukh1#
我不太了解Web套接字,但我认为您可以尝试将
ws://
替换为wss://