node.js sec.io聊天应用程序:不在两个浏览器窗口之间发送消息,这是我的错误



JS代码。这是服务器文件当我在下面的代码下运行此时,当我单击按钮时,它不会发送消息。

var express = require('express');
var socket = require('socket.io');
var app = express();
var server = app.listen(8000,function(){
console.log("The server is listening on the port 8000");
});
app.use(express.static('public'));
var io = socket(server);
io.on('connection', function(socket){
socket.on("chat", function(data){
    io.sockets.emit("chat", data);
  });
});

这是我的index.html代码,还包含和CSS文件,我在此不包括在这里

<!DOCTYPE html>
<html>
<head>
<title>my first chat app</title>
<script 
src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js">
</script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <div id="mario-chat">
        <div id="chat-window">
            <div id="output"></div>
            <div id="feedback"></div>
        </div>
        <input id="handle" type="text" placeholder="Handle"/>
        <input id="message" type="message" placeholder="Message"/>
        <button id="send">Send</button>
    </div>
    <script src="/chat.js"></script>
    </body>
    </html>

上面的代码包括stylesheet.css文件,以使其看起来不错。这是我的chat.js文件,它是客户端功能。

var socket = io.connect("http://localhost:8000");
var message = document.getElementById("message");
var handle = document.getElementById("handle");
var btn = document.getElementById("send");
var output = document.getElementById("output");
var feedback = document.getElementById("feedback");
btn.addEventListener("click",function(){
socket.emit("chat", {message:message.value,handle:handle.value});
 });
socket.on("chat", function(data){
output.innerHTML += '<p><strong>' + data.handle + ':</strong>' +
data.message + '</p>';
 });

请纠正我在哪里错误预先感谢。

必须在客户端代码套接字中使用ws协议创建。所以, io.connect("http://localhost:8000");应该是io.connect("ws://localhost:8000");

最新更新