2016-11-22 24 views
0

我正在爲乘坐跟蹤API應該是一個Web服務我是使用Node.js的,MySQL和在這個郵差(克羅姆APP)怎麼去表達會話值沒有任何的Node.js要求

web服務我需要使用TCP套接字,所以我使用簡單的'net'包而不是'socket.io'包,我需要特定的套接字數據,因此我使用'express-session'包。設置騎的id會話,然後嘗試運行它在套接字,但快遞會話的價值無法獲取沒有任何請求,所以我不能在MySql查詢中使用它

這裏我添加一些相關的鱈魚這個過程。

app.js是波紋管

var trackride = require('./routes/trackride'); 

var app = express(); 

var net = require('net'); 
var sockets = []; 

var session = require('express-session'); 

var svr = net.createServer(function(sock) { 

    console.log('Connected: ' + sock.remoteAddress + ':' + sock.remotePort); 

    var query = connection.query('SELECT * FROM tbl_trip WHERE id = ? ',[############# HERE I WANT SESSION RIDE ID #############], function(err, results) { 

     if (err) throw err 

     driverlat = results[0].driverlat; 
     driverLong = results[0].driverlong; 
     passengerLat = results[0].passengerlat; 
     passengerLong = results[0].passengerlong; 
     pathString = results[0].pathString; 

    }); 

}); 

app.use('/trackride', trackride); 


var svraddr = '192.168.100.50000000'; 
var svrport = 6969; 

svr.listen(svrport, svraddr); 
console.log('Server Created at ' + svraddr + ':' + svrport + '\n'); 

我的路線文件「trackride.js」設置會話是波紋管

var express = require('express'); 
var router = express.Router(); 
var url = require('url'); 
router.post('/', function(req,res,next){ 

     var reqObj = req.body; 

     var rideId = reqObj.rideId; 

     req.session.cookie.rideId = rideId; 
     console.log(req.session); 

     res.json(responseAns); 
}); 

有沒有辦法使用快遞會話值,而不要求或者有沒有其他辦法來解決我的這個問題?

請提供我解決方案或相關工作程序的鏈接。

感謝...

+2

你正在混淆完全不同和不相關的東西。 TCP套接字與Websockets不同,它們與HTTP請求都不相同。如果您需要HTTP,請使用「http」模塊建立常規HTTP服務器;如果您需要Web套接字,請使用「socket.io」。 – jcaron

回答

1

你已經完全混合快遞,HTTP,TCP套接字的WebSocket等

首先,快遞會話的概念就沒有HTTP請求之外的意義。它告訴你一個特定的HTTP請求屬於哪個HTTP會話。你如何知道沒有任何HTTP請求發生?這沒有任何意義。

其次,你正在創建一個Express應用程序,但是你不會讓它在任何端口上進行監聽,所以它沒有任何影響。

第三,您在TCP服務器處理程序中設置了一堆全局變量,只要您有多個請求,就會發生衝突。

你可能需要在這裏(雖然很難從你的問題中猜測)是WebSocket。你可以看到我的WebSocket客戶端和服務器的例子,我發佈在GitHub上:

看看它是如何工作的,如果這是一種「插座」,你需要的。