1
我是新來的Node.js/socket.io所以我真的不知道我在做什麼,但我得爲我的服務器端:客戶端tcp與node.js/socket.io?
var app = require('net')
, fs = require('fs')
var server = app.createServer(function (socket) {
socket.write("Echo server\r\n");
socket.pipe(socket);
socket.on('data', function(data) {
console.log(data);
});
});
var io = require('socket.io').listen(server)
server.listen(81);
所以TCP服務器的工作原理當我使用nc localhost 81併發送數據時。但是,我不知道如何使用腳本標記從服務器端連接併發送數據到網站上的tcp服務器。那麼客戶端會連接到這個tcp服務器並將數據發送給它?
謝謝!
新添加的代碼:
服務器:
var app = require('net')
, fs = require('fs')
var sockets_list = [];
var server = app.createServer(function (socket) {
sockets_list.push(socket);
socket.write("Echo server\r\n");
socket.on('data', function(data) {
console.log(data);
for (var i = 0; i < sockets_list.length; i++) {
sockets_list[i].write(data);
}
});
socket.on('end', function() {
var i = sockets_list.indexOf(socket);
sockets_list.splice(i, 1);
});
});
server.listen(81);
客戶:
<script type="text/javascript" src="http://localhost:82/socket.io/socket.io.js"> </script>
<script>
var socket = io.connect('http://localhost:81');
socket.on('connect', function() {
socket.send('hi');
});
socket.send('hi1');
socket.emit('hi2');
alert('here');
</script>
發生了什麼事:
我有一個網頁加載這需要一個插座和NC本地主機81佔據另一個插座。所以nc顯示網頁發送的所有內容。連接網頁後,警報('here');被執行並且nc顯示http請求,但是沒有其他東西被髮送到tcp服務器,並且網頁處於持續刷新狀態。爲什麼網頁永遠不會完全加載,'hi'消息永遠不會被髮送,以及http請求到tcp服務器的情況如何?爲什麼我的tcp客戶端不能通過我的tcp服務器失敗?
發送一個http請求到tcp服務器,這有什麼關係嗎?同樣在我連接後,刷新循環繼續移動,就像網頁從未完成移動一樣......發生了什麼? – Derek
您無法從網頁建立* raw * TCP連接;沒有允許你打開任意套接字的瀏覽器工具。 Socket.io提供了一個模擬[WebSocket](http://en.wikipedia.org/wiki/WebSocket)的跨瀏覽器抽象層,它允許TCP類似的全雙工消息傳遞。 – josh3736
k thx爲我解釋第一部分,但我仍然困惑爲什麼當我嘗試連接到我的tcp服務器網頁從未完全結束,我不能發送任何東西。上面添加了新的代碼。 – Derek