java rtc_java基于WebSocket通信,并通过webRTC调用本地摄像头实现聊天室源代码

该博客介绍了一个使用Java WebSocket进行通信,并结合WebRTC调用本地摄像头的聊天室应用。通过`MyMessageInbound`类处理WebSocket连接的打开、关闭以及文本消息的收发,实现了多人在线聊天功能。当接收到消息时,会广播给所有在线用户,除了发送者自己,展示不同的消息反馈。
摘要由CSDN通过智能技术生成

package com.web;

import java.io.IOException;

import java.nio.ByteBuffer;

import java.nio.CharBuffer;

import org.apache.catalina.websocket.MessageInbound;

import org.apache.catalina.websocket.WsOutbound;

public class MyMessageInbound extends MessageInbound {

private int userIdName = 0;

public int getUserIdName() {

return userIdName;

}

protected void onOpen(WsOutbound outbound) {

super.onOpen(outbound);

userIdName = outbound.hashCode();

EchoServlet.getSocketList().add(this);

}

protected void onClose(int status) {

EchoServlet.getSocketList().remove(this);

super.onClose(status);

}

// 有二进制消息数据到达,比如音频等文件传输

@Override

protected void onBinaryMessage(ByteBuffer buffer) throws IOException {

}

@Override

protected void onTextMessage(CharBuffer buffer) throws IOException {

String msgOriginal = buffer.toString();

System.out.println("msgOriginal:::"+msgOriginal);

int startIndex = msgOriginal.indexOf("[email protected]#$%");

String nikeName = msgOriginal.substring(0, startIndex);

String textMsg = msgOriginal.substring(startIndex + 5);

// 将字符数组包装到缓冲区中

// 给定的字符数组将支持新缓冲区;即缓冲区修改将导致数组修改,反之亦然

String countMsg = EchoServlet.getSocketList().size() + "人同时在线";

System.out.println("同时在线人数:::"+countMsg);

String msg1 = "

emo_02.gif"+nikeName + ": " + textMsg+"
" ;

String msg2 = "

emo_01.gif "+nikeName+" " + textMsg+"
" ;

System.out.println(EchoServlet.getSocketList().size());

for (MyMessageInbound messageInbound : EchoServlet.getSocketList()) {

CharBuffer msgBuffer1 = CharBuffer.wrap(msg1);

CharBuffer msgBuffer2 = CharBuffer.wrap(msg2);

WsOutbound outbound = messageInbound.getWsOutbound();

if (messageInbound.getUserIdName() != this.getUserIdName()) {

outbound.writeTextMessage(msgBuffer1);

outbound.flush();

} else {

outbound.writeTextMessage(msgBuffer2);

outbound.flush();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值