gpt4 book ai didi

node.js - socket.io/?EIO=3&transport=polling&t=1345678 不充电

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:14 26 4
gpt4 key购买 nike

我使用 node.js、express 和 socket.io 进行了聊天。这是 app.js 代码:

var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);

server.listen(process.env.PORT || 8080);



app.use(express.static(__dirname + '/'));


io.on('connection', function(socket){
socket.on('message sent', function(data){
io.emit('receive', { msg: data.msg, uname: data.uname, uid: data.uid, uimg: data.uimg });
});

socket.on('message sent room', function(data){
console.log(data.mid);
io.in(data.uroom).emit('receive', { msg: data.msg, uname: data.uname, uid: data.uid, uimg: data.uimg, mid: data.mid });
});

socket.on('join', function(data){
io.emit('join user', { uname: data.uname, uid: data.uid });
});

socket.on('create', function (room) {
socket.join(room);
});

});

这是我的 haml 文件中的代码

  %script{:src => "https://cdn.socket.io/socket.io-1.2.0.js"}

- if Rails.env.production?
:javascript
var socket = io.connect('https://myherokuappurl.herokuapp.com/');
- else
:javascript
var socket = io.connect('http://localhost:8080/');

:javascript
var userId = "#{current_user.id}";
var userName = "#{current_user.name}";
var userImg = "#{@userImage}";
var room = "#{@conversation.id}";
var messageId = 0;

$(document).ready(function(){
socket.emit('create', room);
$( "#m" ).focus();
var wtf = $('.panel-chat');
var height = wtf[0].scrollHeight;
wtf.scrollTop(height);
});

$('form').submit(function(){
var message = $('#m').val();
$.ajax({
type: "POST",
url: "#{dashboard_messages_path}",
dataType : 'json',
data: {'message' : {'conversation_id': room,
'body': message,
'user_id': userId} },
success: function(data) {
console.log(data.id);
messageId = data.id;
socket.emit('message sent room', {msg: $('#m').val(), uname: userName, uid: userId, uimg: userImg, uroom: room, mid: messageId});
$('#m').val('');
}
});
return false;
});

socket.on('receive', function(data){
var message = '<tr><td class="td-chat"><div class="text-center"><img alt="'+data.uname+'" class="avatar center-block" src="'+data.uimg+'" height="60" width="60"></div></td><td><small><strong>'+data.uname+':<br></strong></small>'+data.msg+'</td></tr>';
var currentMessageId = data.mid;

if (data.uid != userId) {
$.ajax({
type: "GET",
url: "#{dashboard_message_read_path}",
dataType : 'json',
data: {'message_id':currentMessageId }
});
}
$("#table-chat").append(message);
var wtf = $('.panel-chat');
var height = wtf[0].scrollHeight;
wtf.scrollTop(height);
});

socket.on('join user', function(data){
if (data.uid != userId) {
$("#userjoin").text(data.uname + " se ha unido!").show().fadeOut(5000);
}
});

但是为了完成这项工作,我必须刷新聊天页面。我注意到用户第一次进入聊天页面时,它没有以下文件:

https://myherokuappurl.herokuapp.com/socket.io/?EIO=3&transport=polling&t=1xxxxxx-0

或者这个在我的本地机器上

http://localhost:8080/socket.io/?EIO=3&transport=polling&t=1xxxxxx-0

所以聊天不会发送消息,而是当您按回车键发送消息时,页面会刷新,这次我有以下文件,一切正常。

https://myherokuappurl.herokuapp.com/socket.io/?EIO=3&transport=polling&t=1xxxxxx-0

或者这个在我的本地机器上

http://localhost:8080/socket.io/?EIO=3&transport=polling&t=1xxxxxx-0

这可能是什么问题,因为这种行为发生在我的本地机器和生产环境中。

在此先感谢您的帮助。

最佳答案

虽然我认为 Bradgnar 可能是对的,但您也可能会遇到加载问题:第一次使用的用户还没有加载 cdn 资源。但是在提交和刷新页面后,文件会立即加载。如果这是问题所在,则您的 io.connect 命令不会执行,因为 io 尚不存在。将任何实际初始化移至 document.ready 方法。

关于node.js - socket.io/?EIO=3&transport=polling&t=1345678 不充电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31903130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com