【发布时间】:2011-11-12 12:27:10
【问题描述】:
我是 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);
因此,当我使用 nc localhost 81 并向其发送数据时,tcp 服务器正常工作。但是,我不知道如何使用脚本标签从服务器端连接和发送数据到网站上的 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 localhost 81 占用另一个套接字。因此 nc 显示网页发送的所有内容。连接网页后,alert('here');被执行,nc显示http请求,但是没有向tcp服务器发送任何其他内容,网页处于不断刷新状态。为什么网页永远不会完全加载,“嗨”消息永远不会发送,以及对 tcp 服务器的 http 请求呢?为什么我的 tcp 客户端不会与我的 tcp 服务器发生故障?
【问题讨论】:
标签: html node.js tcp websocket socket.io