刚刚完成一个NodeJS+Socket.io+Mongoose搭建聊天系统的小框架雏形。在ff和chrome浏览器演示正常。但是在IE下,发送一条数据的时候,会同时显示两条,并且保存到库中的数据也是两条。
Jquery获取输入数据
$('#startChat').bind('click',function(){
var message = $('#senddata').val();
var name = $('#n').html();
var data ={'message':message,'name':name};
sendChat(data);
});
function sendChat(data){ socket.emit('sendChat',data); }
socket.on('sendChat',function(data){
mongoAction.saveMessage(socket,data);
});
function saveMessage (socket,data){ var MainMessage = mongoose.model('MainMessage',messageSchema,'MainMessage'); var newMessage = new MainMessage(); newMessage.message = data.message; newMessage.nickname = data.name; newMessage.save(function (err,udata){ if(udata){ socket.emit('saveChat','ok',data); socket.broadcast.emit('saveChat','ok',data);
socket.on('saveChat',...)...
var p = document.createElement('p');
p.innerHTML = '<font color="green ">'+data.name+'</font>:'+data.message;
document.getElementById('output').appendChild(p);
是代码哪里出了问题么? 有木有好人能帮我看一看,万分感谢
3 回复
啊。解决了,感谢某位大神
if (/Firefox\/\s/.test(navigator.userAgent)){
var socket = io.connect('localhost:8124',{transports:['xhr-polling']});
}
else if (/MSIE (\d+.\d+);/.test(navigator.userAgent)){
var socket = io.connect('localhost:8124',{transports:['jsonp-polling']});
}
else {
var socket = io.connect('localhost:8124');
}