我试图使用图像进行实时聊天使用pusher我无法找到任何关于如何使用pusher显示图像我使用BLOB存储图像但是无法在客户端的javascript中显示它们,键入消息的人图像出现只是找到,但在另一个人的屏幕上它的回来未定义。我没有发布提交javascript,因为它的工作正常只是绑定不好
$avatar = 'data:image/png;base64,'. base64_encode( $image );
$pusher = PusherInstance::get_pusher() ;
$pusher->trigger(
'channel_test',
'new_comments',
array('message' => $message ,'user' => $data_user),
$_POST['socket_id']
);
echo json_encode(array('message' => $message,'user' => $data_user,'avatar'=>$avatar)) ;
然后我尝试使用javscript显示它们,
channel.bind('new_comments',function(data){
$('.chat-widget').append("<div class='row'>\
<div class='chat_post col-lg-12'>\
<div class='media'>\
<a class='pull-left' href='#'>\
<img class='media-object img-circle' width=30 height=30 src='" + data.avatar +"' alt=''>\
</a>\
<div class='media-body'>\
<h4 class='media-heading chat-name'><a href='profile.php?user=" + data.user + "' class='user_profile'>" + data.user + "</a>\
<span class='small pull-right'>12:23 PM</span>\
</h4>" + data.message + " </div>\
</div>\
</div>\
</div>\
<hr>\
");
答案 0 :(得分:1)
如评论中所述,邮件大小超过10kB限制。由于此限制,最好只通过Pusher发送图像的URL,并从服务器提供图像本身。
答案 1 :(得分:0)
像现代的信使一样,将您的图像存储到数据库中的副本,大小应该非常小(在php中使用像GD这样的图像库),减小大小到 100X100 像素之类的东西,并使用 Blur 过滤器来减小尺寸。 然后将消息保存为 BLOB 类型在数据库中。然后你可以用socket发送它,你遵循推送规则!
第二个副本不保存在DB中,您必须将其存储在Storage中,当收到消息时,用户必须点击预览图像(小尺寸)才能根据URL下载。
您还可以使用 javascript 或 JQuery 来制作接收消息事件触发后的自动下载机制。