尽管运行 cors 库,但我还是遇到了跨源标头错误,或者只是在控制台中轮询时未找到 404。
项目结构如下所示
我的目标是在每个视图上都有小聊天小部件。我会将其作为 EJS 部分包含到其他视图中。
我不确定我出了什么问题,我尝试在端口 5000 上运行 Express,在 8080 或 3000 上运行 Socket IO,所有不同的组合都没有产生任何好处。
前端部分EJS看起来像这样
<ul id="messages"></ul>
<form action="/" method="POST" id="chatForm">
<input id="txt" autocomplete="off" autofocus="on" oninput="isTyping()" placeholder="type your message
here..." /><button>Send</button>
</form>
前端页面的其余部分如下所示
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.0.4/socket.io.js" integrity="sha512-aMGMvNYu8Ue4G+fHa359jcPb1u+ytAF+P2SCb+PxrjCdO3n3ZTxJ30zuH39rimUggmTwmh2u7wvQsDTHESnmfQ==" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style> etcetc
<%- include ('./partialChatWidget.ejs') %>
还有JS
<Script>
var socket = io.connect('http://localhost:5000', { transport : ['websocket'] } );
$('form').submit(function(e){
e.preventDefault();
socket.emit('chat_message', $('#txt').val());
$('#txt').val('');
return false;
});
socket.on('chat_message', function(msg){
$('#messages').append($('<li>').html(msg));
});
socket.on('is_online', function(username) {
$('#messages').append($('<li>').html(username));
});
var username = prompt('Please tell me your name');
socket.emit('username', username);
</script>
那么这里出了什么问题,我需要在不同端口上有2个服务器还是2个实例,我一直认为socket IO借用了http服务器,而不是express实例。
谢谢你的协助。我可能会补充说,当我尝试在 2 个不同的端口上运行时,会出现跨源错误。否则我会在控制台中找不到 404。页面以及部分和初始 JS(Jquery) 运行。
一只萌萌小番薯
鸿蒙传说
慕仙森
相关分类