我目前正在尝试使用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);
我在Google上搜索过,发现没有与我的代码相关的解决方案。请帮助!
答案 0 :(得分:0)
在初始化之前使用io变量在io.sockets之前移动var io
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);
});
});
答案 1 :(得分:0)
您在声明之前使用了变量,并且您的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);
答案 2 :(得分:0)
在初始化之前,您正在访问io
变量。
只需移动以下行(io
变量初始化):
var io = require("socket.io").listen(app.listen(port));
在此行首次使用io
变量之前:
io.sockets.on("connection", function (socket){