Слияние кода завершено, страница обновится автоматически
var SocketIO = require("socket.io");
var http = require("http");
var express = require("express");
var app = express();
var fs = require("fs");
var path = require("path");
app.use(express.static(path.join(__dirname, "html")));
app.get("/hello", function (req, res) {
res.end("this is hello world from heaven");
});
var httpserver = http.Server(app);
var server = new SocketIO(httpserver, {
// pingTimeout: 10 * 1000, //超时时间 默认超时时间为1000*60
// pingInterval: 1000 * 2, //ping的频率,默认时间是2000ms
// path: "/socket.io", //提供客户端js的路径
// serveClient: true //是否提供客户端js,若值为false,则不提供客户端js
});
server.set("authorization", function (handshakeData, accept) {
accept(null, true);
});
var socketList = new Set();
server.on("connection", function (socket) {
socketList.add(socket);
// console.log("新客户端连接,当前客户端数量:" + socketList.size);
socket.on("server.online", function (username) {
socket.username = username;
socketList.forEach(function (socket) {
if (socket.username !== username) {
socket.emit("client.online", username);
}
})
});
socket.on("server.newMsg", function (data) {
if (data.data.type == "file") {
var filename = (new Date()).getTime();
fs.writeFileSync(path.join(__dirname, "html/files", filename + data.data.ext), data.data.message);
data.data.message = filename + data.data.ext;
}
socketList.forEach(function (socket) {
if (socket.username != data.username) {
socket.emit("client.message", data);
}
});
})
setInterval(function () {
var friendsList = [];
socketList.forEach(function (socket) {
friendsList.push(socket.username);
});
socketList.forEach(function (socket) {
socket.emit("get_friends", friendsList);
});
}, 500)
socket.on("close", function () {
socketList.delete(socket);
});
socket.on("error", function () {
socketList.delete(socket);
});
socket.on("msg", function (data) {
console.log("来自客户端的消息:" + data);
})
});
httpserver.listen(8080);
console.log("server started at 8080");
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )