套接字.IO在处理模块时遇到一些麻烦
Socket.io has some trouble when handling from modules
嗨,我正在使用套接字。IO和node.js (express.js)。我看到了很多例子,从app.js文件中编码。现在我想组织更好的代码,我想有我所有的socket。其他模块/文件中的IO处理程序。
这是我现在的文件:
app.js
var moduleExports = require('./routes/moduleExports');
app.get('/', function(req, res){
res.sendfile(path.join(__dirname + '/index.html'));
io.on('connection', function(socket){
moduleExports.socketio(io, socket);
});
});
moduleExports.js
module.exports = {
init: function(){
//some other functions
}, socketio: function(io, socket){
socket.emit('chat', 'Wellcome!');
socket.on('chat', function (data) {
socket.broadcast.emit('chat', data);
//socket.broadcast.emit('chat', data);
});
socket.on('disconnect', function () {
socket.broadcast.emit('chat', 'Disconnected');
//socket.broadcast.emit('chat', data);
});
}
};
问题:
如果我打开两个不同的浏览器,一个是约翰的浏览器,一个是Doe的浏览器。如果约翰发了一条信息,他会收到两次。如果我再次打开第三个浏览器,并从John发送消息,那么Doe和第三个浏览器将收到三次消息。
我不知道为什么会发生这种事。我知道"moduleExports.js"文件发生了一些事情。但我需要一种方法来编码我的插座。app.js外部的IO处理程序。所以我认为这将是一个很好的模式,但它不是。
顺便说一下,客户端代码(它可以工作):<script src="/socket.io/socket.io.js"></script>
var socket = io();
function submit(){
socket.emit('chat', $('#m').val());
$('#m').val('');
return false;
}
io.on('connection'
你应该有它只是一次在你的代码,每次客户端连接到你的服务器事件将被抛出,如果你有它多次我猜它运行更多的时间。我要做的是:
var moduleExports = require('./routes/moduleExports');
io.on('connection', function(socket){
moduleExports.socketio(io, socket);
});
app.get('/', function(req, res){
res.sendfile(path.join(__dirname + '/index.html'));
});
相关文章:
- 使用JavaScript获取Google地图上显示的所有推文时遇到麻烦
- 在 Javascript 中添加数字时遇到麻烦
- 使用 Coffeescript 和 Express .js 将变量传递给 Jade 时遇到麻烦
- 编写正确的 jQuery 插件时遇到麻烦
- 在三.js中更改纹理时遇到麻烦
- 从 javascript 中的函数返回时遇到麻烦
- 理解 $.ajax() 参数以获取 PHP 变量时遇到麻烦
- 比较数组时遇到麻烦
- 使 JavaScript 函数工作时遇到麻烦
- 在Firefox和IE中获取CSS属性时遇到麻烦
- 将 Blueimp Gallery 与 HTML 和 Bootstrap 集成时遇到麻烦
- 将jQuery导入WordPress时遇到麻烦
- 在解决来自 coderbyte 的 JavaScript 编码挑战时遇到麻烦
- 从页面抓取时遇到麻烦
- 让jQuery在Wordpress中工作时遇到麻烦
- 在codeigniter框架中添加css和js文件时遇到麻烦
- 处理由dayClick返回的日期时遇到麻烦
- 在使用jQuery更改依赖于滚动位置的类时遇到麻烦
- 在使用javascript加速滚动动画时遇到麻烦
- 在跨域jquery/Ajax服务调用中遇到麻烦