簡體   English   中英

socket.io無法正常工作node.js

[英]socket.io not working node.js

我無法在node.js中運行socket.io代碼,運行代碼時也不會顯示console.log()。 下面是代碼。

app.js

var express = require('express');
var http = require('http');
var app = express();
app.set('port', process.env.PORT || 3000);
app.post('/testStream',test.testStream);
var server = http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

module.exports.appServer = server;

並且我創建了一個test.js文件,在這里我可以訪問此導出的變量appServer。

var server = require('../app.js');

exports.testStream = function(req,res){        
    var io = require('socket.io').listen(server.appServer);
    io.on('connection',function(socket){
        console.log("in socket");
        fs.readFile('E:/temp/testimg.png',function(err,buf){
            socket.emit('image',{image: true,buffer: buf});
            console.log("test image");
        });
    })       
}

代碼運行時卡住,沒有顯示console.logs()。 我在這兒做錯了。 很感謝任何形式的幫助。

我建議遵循socket.io文檔中建議的代碼結構。

此外,你應該調用io.listenio.on('connection')的內部testStream快遞中間件。 這些都是您只應該執行一次的事情,理想情況下,它們應該在啟動期間在app.js內發生,而不是響應POST請求。 實際上,我不確定您的testStream中間件的用途是什么,它甚至不返回任何響應(例如res.end()

如果您想在一個單獨的模塊中處理套接字連接,則可以將io實例作為變量傳遞給子模塊,而不是像以前那樣導出應用程序server 簡而言之,請嘗試以下操作:

app.js

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var test = require('./test')(io);

app.set('port', process.env.PORT || 3000);

server.listen(app.get('port'), function() {
    console.log('Express server listening on port ' + app.get('port'));
});

test.js

module.exports = function(io) {
    io.on('connection', function(socket) {
        console.log("in socket");
        fs.readFile('E:/temp/testimg.png', function(err, buf) {
            socket.emit('image', {
                image: true,
                buffer: buf
            });
            console.log("test image");
        });
    });
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM