1
我正在嘗試將使用express編寫的node.js服務器連接到客戶端應用程序(用C++編寫,儘管應該沒有任何影響) socket.io。使用socket.io將應用程序連接到節點服務器
服務器幾乎可以歸結爲:
var express = require('express');
var http = require('http')
var app = express();
var server = http.createServer(app)
var io = require('socket.io').listen(server);
app.use(express.cookieParser());
app.use(express.session({
...
}));
app.use(app.router);
// response handling -------
app.get('/', function(req, res){
console.log('request get /');
});
io.sockets.on('connection', function(socket) {
console.log('sockets.io connection!');
});
// -------
port = 3000
app.listen(port);
console.log('Listening on port: ' + port);
當我火了這個節點我要做兩件事情:
- 我嘗試用瀏覽器連接。這意味着它會觸發apt.get('/'...),但它不會觸發io.sockets.on('connection'...),這是意想不到的,這讓我感到懷疑,我誤解了一些東西。
- 我啓動我的C++應用程序並調用TCP套接字連接。套接字連接並讓我發送數據,但我從來沒有得到任何跡象表明節點端發生了什麼(並且我從來沒有收到任何數據)。 io.sockets.on('connection'...)永遠不會被觸發,並且不會出現有關格式錯誤的消息的錯誤。
所以我的問題是:我誤解了sockets.io的設置或功能?我如何將我的應用程序連接到此節點服務器?
謝謝!
你的第二個建議與我正在嘗試做的事情是一致的......但是,說實話,我寧願不要拉昇或任何大的事情(不要誤會我的意思,在大多數情況下,我愛情提升)。是不是可以使用一個簡單的套接字庫來建立一個普通的舊的TCP連接並與節點服務器通信? – WestleyArgentum
那麼https://github.com/ebshimizu/socket.io-clientpp呢?這應該做到這一點。主要問題是Socket.io的概念。沒有「套接字庫」。 Socket.io使用WebSockets(主協議)並實現Adobe Flash套接字,JSONP輪詢和AJAX長輪詢。也就是說,您可以使用專用的WebSocket模塊(例如https://github.com/LearnBoost/websocket.io,這將是一種乾淨的方法),也可以使用全功能的Socket.io客戶端框架。但是,如果您喜歡真正快速且功能全面的功能,並且廣泛支持平臺支持,則應使用Faye。 –
嘿,我想我的誤解在於我可以在不使用websocket的情況下創建一個簡單的tcp連接。非常感謝您的幫助。 我認爲我要向前邁進的方式是製作一個http服務器和一個網絡服務器,它們監聽不同的端口,然後調用相同的功能(它們每個都需要一些功能)......只是好奇心,你知道這是否是一種常見的方法嗎? – WestleyArgentum