如果/else条件在socket.io和HTTP node.js中

If/else condition in socket.io and HTTP node.js

本文关键字:HTTP node js io socket else 条件 如果      更新时间:2023-09-26

我正在尝试使用Node.js的HTTP包为socket.io实现一个条件操作。

基本上,我想要的是,根据get请求,socket.io调用不同的函数或发送不同的数据。

这是我的代码:

var http = require('http'),
fs = require('fs');
var app = http.createServer(function (request, response) {
fs.readFile("client.html", 'utf-8', function (error, data) {
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.write(data);
    response.end();
});
}).listen(1337);
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket) {
socket.on('message_to_server', function(data) {
    http.get("/something", function(res) {
        io.sockets.emit("message_to_client",{ message: data["message"] });
        console.log(data["message"]);
    });
    http.get("/else", function(res) {
        console.log("something else");
    });
});
});

我应该怎么做才能实现这样的功能?

我认为你做这件事的方式不对。

它可以像一样完成

io.sockets.on('connection', function(socket) {
   socket.on("something", function(res) {
        socket.emit("message_to_client",{ message: data["message"] });
        console.log(data["message"]);
   });
   socket.on("else", function(res) {
        console.log("something else");
   });
});

并编辑路由CCD_ 1的视图以便在其加载到服务器时发出CCD_。并对路由/else 执行相同操作

在这里,您将根据您所在的页面向服务器发送自定义事件,以便服务器可以相应地响应/发送每个路由。你尝试的另一种方法似乎不起作用。对不起,如果我错了。

更新

在你的客户端(视图),你可以有像

view1.html

var socket = io.connect('http://localhost:8080');
socket.on('connect', function(){
socket.emit('something');
});
socket.on('message_to_client', function (data) {
alert(data);
});

view2.html

var socket = io.connect('http://localhost:8080');
socket.on('connect', function(){
socket.emit('else');
});
socket.on('message_to_client', function (data) {
alert(data);
});

注释

还要注意,如果您使用io.socket.emit,它将从服务器广播到所有连接。相反,使用socket.emit(在您的情况下,对象是socket)将发送到相关连接