节点 + 远程登录 + OS X
Node + telnet + OS X
美好的一天。
var events = require('events');
var net = require('net');
var channel = new events.EventEmitter();
channel.clients = {};
channel.subscriptions = {};
channel.on('join', function(id, client) {
this.clients[id] = client;
this.subscriptions[id] = function(senderId, message) {
if (id != senderId) {
this.clients[id].write(message);
}
}
this.on('broadcast', this.subscriptions[id]);
});
var server = net.createServer(function(client) {
var id = client.remoteAddress + ':' + client.remotePort;
client.on('connect', function() {
channel.emit('join', id, client);
});
client.on('data', function(data) {
data = data.toString();
channel.emit('broadcast', id, data);
});
});
server.listen(8888);
当我运行服务器并通过 telnet "广播"连接时,发出不起作用。"节点.js在行动"中的示例。书籍存档中的代码也不起作用。请帮忙。可能有什么问题?我尝试将 id 的生成器更改为强大的 inc"i"并省略......if (id != senderId)...但不起作用!!
当调用 net.createServer
的回调函数时,它已经意味着客户端已连接。另外,我认为connect
事件甚至不是由net.createServer
生成的。
因此,与其等待connect
事件再发出"join",不如立即发出它:
var server = net.createServer(function(client) {
var id = client.remoteAddress + ':' + client.remotePort;
// we got a new client connection:
channel.emit('join', id, client);
// wait for incoming data and broadcast it:
client.on('data', function(data) {
data = data.toString();
channel.emit('broadcast', id, data);
});
});
相关文章:
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- Safari(Mac OS)上的jQuery平滑滚动问题
- 尝试使用Phonegap进行php登录
- Facebook登录按钮没有'不能在Firefox上工作
- 使用javascript反复检查用户在facebook上的登录状态
- Firebase-登录时获取url
- BrowserId登录请求在文档加载时被调用
- 通过iframe登录到远程站点
- Jquery Modal表单登录与AJAX-ASP经典上的IE 9
- 如何使用js自动登录
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- 如何仅在首次登录时显示弹出窗口
- 如何检查用户已经登录facebook
- Facebook登录不适用于iOS的应用内浏览器
- Facebook登录按钮悬停框
- Phonegap:获取访问令牌时出现LinkedIn登录错误
- 如何检查用户是否使用$routeChangeStart登录angularjs
- Node.js Passport成功登录后显示用户名
- 有登录表单时无法提交表单
- 节点 + 远程登录 + OS X