【问题标题】:Socket Property Of Undefined未定义的套接字属性
【发布时间】:2015-01-23 03:19:54
【问题描述】:

我目前正在尝试使用 node、express 和 socket.io 创建一个实时聊天室。当我运行代码时,我收到以下错误消息: http://gyazo.com/d9956a80a691d1642b438173b0bd85bf

另外,这是我的 index.js 代码:

var express = require("express");
var app = express();
var port = 3700;

app.use(express.static(__dirname + "/public"));

app.set("views", __dirname + "/tpl");
app.set("view engine", "jade");
app.engine("jade", require("jade").__express);
app.get("/", function (req, res){
    res.render("page");
});

io.sockets.on("connection", function (socket){
    socket.emit("message", { message: "welcome to the chat" });
    socket.on("send", function (data){
        io.sockets.emit("message", data);
    });
});

var io = require("socket.io").listen(app.listen(port));
console.log("Listening On Port " + port);

我通过谷歌搜索并没有找到与我的代码相关的解决方案。请帮忙!

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    您在初始化之前使用 io 变量将 var io 移动到 io.sockets 之前

    var io = require("socket.io").listen(app.listen(port));
    io.sockets.on("connection", function (socket){
        socket.emit("message", { message: "welcome to the chat" });
        socket.on("send", function (data){
            io.sockets.emit("message", data);
        });
    });
    

    【讨论】:

      【解决方案2】:

      您在声明之前使用了一个变量,并且您的 listen() 调用看起来有点奇怪。

      不要这样做:

      io.sockets.on("connection", function (socket){
        socket.emit("message", { message: "welcome to the chat" });
        socket.on("send", function (data){
          io.sockets.emit("message", data);
        });
      });
      
      var io = require("socket.io").listen(app.listen(port));
      

      你应该做更多这样的事情:

      var io = require("socket.io")(app);
      
      io.sockets.on("connection", function (socket){
        socket.emit("message", { message: "welcome to the chat" });
        socket.on("send", function (data){
          io.sockets.emit("message", data);
        });
      });
      
      app.listen(port);
      

      【讨论】:

        【解决方案3】:

        您正在访问io 变量,然后才被初始化。

        只需移动以下行(io 变量初始化):

        var io = require("socket.io").listen(app.listen(port));
        

        在此行第一次使用io 变量之前:

        io.sockets.on("connection", function (socket){
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-04
          • 2019-02-20
          • 1970-01-01
          • 1970-01-01
          • 2013-07-10
          • 2019-05-30
          相关资源
          最近更新 更多