php聊天室发送表情,聊天室之表情发送

表情图片渲染

将表情包放置在public/img路径下,遍历文件渲染到前端界面

function initEmoji() {

//获取前端存放表情的div

var emojiContainer = document.getElementById('emojiWrapper'),

docFragment = document.createDocumentFragment();

//遍历表情包文件,渲染到前端

for (var i = 1; i <=68; i++) {

var emojiItem = document.createElement('img');

emojiItem.src = '/emoji/' + i + '.gif';

emojiItem.title = i;

docFragment.appendChild(emojiItem);};

emojiContainer.appendChild(docFragment);}

表情图片获取

此时点击表情符号会显示所有的表情,还需要控制存放表情图层在点击别处时消失,并且当点击相应表情时要获取相应的图片信息并添加至输入框一段类似于[emoji:3]的代码,代表相应的表情

function showEmoji() {

//点击表情时表情图层出现

var emojiwrapper = document.getElementById('emojiWrapper');

emojiwrapper.style.display = 'block';

document.getElementById('emoji').addEventListener('click', function(e) {

var emojiwrapper = document.getElementById('emojiWrapper');

emojiwrapper.style.display = 'block';

e.stopPropagation();

}, false);

//没有点击表情时表情图层消失

document.body.addEventListener('click', function(e) {

var emojiwrapper = document.getElementById('emojiWrapper');

if (e.target != emojiwrapper) {

emojiwrapper.style.display = 'none';

};

});

document.getElementById('emojiWrapper').addEventListener('click', function(e) {

var target = e.target;

if (target.nodeName.toLowerCase() == 'img') {

var messageInput = document.getElementById('editArea');

messageInput.focus();

//再输入框中添加相应表情信息

messageInput.value = messageInput.value + '[emoji:' + target.title + ']';

};

}, false);}

表情匹配

此时输入框中会增加一段类似[emoji:3]的代码,代表相应的表情,在页面显示的时候,我们需要将这个代码替换成相应的表情代码

function _showEmoji(msg) {

var match, result = msg,

reg = /\[emoji:\d+\]/g,

emojiIndex,

totalEmojiNum =document.getElementById('emojiWrapper').children.length;

while (match = reg.exec(msg)) {

emojiIndex = match[0].slice(7, -1);

if (emojiIndex > totalEmojiNum) {

result = result.replace(match[0], '[X]'); }

else {

result = result.replace(match[0], ''%20+%20emojiIndex%20+%20'.gif'); }; };

return result;

}

表情发送

此时调用_showEmoji将表情信息匹配成表情图片,添加到发送信息,表情功能就实现啦!

function doSend(e) {

if (e.which === 13) {

e.preventDefault();

var msg = $(this).val();

//将表情匹配后的内容添加到msg并发送

msg = _showEmoji(msg);

$(this).val('');

socket.send(_id,fid,msg);}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP WebSocket 聊天室是一种基于 WebSocket 协议的实时通信系统,它允许多个用户在一个聊天室中实时交流。下面是一个简单的介绍: 1. WebSocket 协议:WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许服务器主动向客户端推送数据,而不需要客户端发起请求。相比传统的 HTTP 请求-响应模式,WebSocket 提供了更低的延迟和更高的实时性。 2. PHP WebSocket 库:PHP 并不原生支持 WebSocket 协议,但可以使用第三方库来实现 WebSocket 功能。其中比较常用的库有 Ratchet、Swoole 等。这些库提供了简单易用的接口,帮助开发者快速构建 WebSocket 服务器。 3. 聊天室功能:PHP WebSocket 聊天室通常具备以下功能: - 用户注册和登录:用户可以通过注册和登录来进入聊天室。 - 实时消息发送和接收:用户可以发送消息到聊天室,并实时接收其他用户发送的消息。 - 在线用户列表:显示当前在线的用户列表,方便用户选择私聊对象。 - 私聊功能:用户可以选择某个在线用户进行私聊。 - 表情和文件发送:支持发送表情和文件等附件。 4. 实现步骤: - 创建 WebSocket 服务器:使用 PHP WebSocket 库创建一个 WebSocket 服务器,监听指定的端口。 - 处理连接和消息:当客户端连接到服务器时,建立 WebSocket 连接,并处理客户端发送的消息。 - 广播消息:将接收到的消息广播给所有在线用户,实现实时通信效果。 - 私聊功能:根据用户选择的私聊对象,将消息发送给指定的用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值