最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

不能与socket.io发送的NodeJS邮件客户端

运维笔记admin11浏览0评论

不能与socket.io发送的NodeJS邮件客户端

不能与socket.io发送的NodeJS邮件客户端

我有2页:播放页面,实时网页和服务器。我想用socket.io做到这一点:我想从播放页面将数据发送到服务器,然后住并显示,当我在播放页面更改自动更新的文本。

播放页面发出此

var n = <%-JSON.stringify(v1)%>;
    var socket = io.connect('http://localhost:3000');
    socket.emit('event', { message: n });

服务器代码

var server = app.listen(3000);  //port 3000 is only for sockets. my app has web traffic on port 5000.
var io = require('socket.io')(server);

io.on('connection', function(socket) {  
    socket.on('event', function(data) {
        console.log('A client sent us this dumb message:', data.message);
        var n = data.message;
        console.log("");
        console.log("data received from play client..trying to send to live");
        console.log("");
        console.log("var n is");
        console.log(n);
        console.log("sending data...");
        socket.emit('event', { message: n });

无论我在直播页面做没有收到消息。我解决我的问题建立在侦听端口3002和这个工作server.js另一个插座的50%。但现在我的内容不会自动直播页面更新。我必须手动刷新,我不希望这样。

这是工作(没有live.ejs页面上实时更新)我的新server.js代码:

const express = require('express');

const store   = require('./store');
const storeLyric   = require('./storeLyric');
const searchF   = require('./search');
// middleware to handle HTTP POST request
// extract the entire body portion of an incoming request and exposes it on req.body
const bodyParser = require('body-parser');



const app = express();
app.set('port', (process.env.PORT || 5000));
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
///new

var server = app.listen(3000);  
var io = require('socket.io')(server);

var server2 = app.listen(3002);  
var io2 = require('socket.io')(server2);

io.on('connection', function(socket) {  
    socket.on('event', function(data) {
        console.log('A client sent us this dumb message:', data.message);
        var n = data.message;
        console.log("");
        console.log("data received from play client..trying to send to live");
        console.log("");
        console.log("var n is");
        console.log(n);
        console.log("sending data...");

io2.on('connection', function(socket2) {  
    socket2.on('live', function(data2) {
    console.log('status from live client:', data2);
    socket2.emit('live', n);
});
});


////////////////////

    });
});



//end new
////////////
// default page
app.get('/', (req,res) => {
    let students = [];
    var end = req.query.end;
    if(end==1 || end==2){
        io2.on('connection', function(socket2) {  
    socket2.on('live', function(data2) {
    console.log('status from live client:', data2);
    socket2.emit('live', '');
});
});
    }
    store.studentList().then((req,respond) => {
        students = req;

        res.render('pages/index', {
            title: '',
            students:students
        })
    })

})

//live page



app.get('/live', function (req, res) {
  res.render('pages/live', {
            n:'gsgs'

    })
})





// search page
app.get('/search', (req,res) => {
    let search = [];
    var q = req.query.q; // $_GET["q"]

    searchF.search(q).then((req,respond) => {
        search = req;

        res.render('pages/search', {
            search:search,
            q:q
        })
    })

})



// play page
app.get('/play', (req,res) => {



    let lyrics = [];

    var vers = req.query.vers; // $_GET["vers"]
    var for_id = req.query.for_id; // $_GET["vers"]

    storeLyric.lyrics(for_id, vers).then((req,respond) => {
        lyrics = req;

        res.render('pages/play', {
            title: '',
            lyrics:lyrics
        })
    });




////////


})

app.listen(app.get('port'), () => {
    console.log("Listening to port: ", app.get("port"))
});

什么我做错了,为什么socket.io不实时工作?感谢帮助!

回答如下:

您需要从服务器端事件发射到客户端,然后搭上数据有

var server = app.listen(3000);  
var io = require('socket.io')(server);


io.on('connection', function(socket) {  
  socket.on('event', function(data) {
    var n = data.message;
    io.sockets.emit('event', message);

});

然后在直播页面前端您写这

var n = <%-JSON.stringify(v1)%>;
var socket = io.connect('http://localhost:3000');
socket.on('event', (data)=>{
     console.log(data)
});
发布评论

评论列表(0)

  1. 暂无评论