import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ReactTooltip from 'react-tooltip'; import classnames from 'classnames'; import clipboardCopy from 'clipboard-copy'; import * as appPropTypes from './appPropTypes'; import { withRoomContext } from '../RoomContext'; import * as requestActions from '../redux/requestActions'; import { Appear } from './transitions'; import Me from './Me'; import ChatInput from './ChatInput'; import Peers from './Peers'; import Stats from './Stats'; import Notifications from './Notifications'; import NetworkThrottle from './NetworkThrottle'; import UrlParse from 'url-parse'; class Room extends React.Component { render() { const { roomClient, room, me, amActiveSpeaker, onRoomLinkCopy } = this.props; const mediasoupClientVersion = room.mediasoupClientVersion === '__MEDIASOUP_CLIENT_VERSION__' ? 'dev' : room.mediasoupClientVersion; const urlParser = new UrlParse(window.location.href, true); // 将字符串按 & 分隔 const parts = urlParser.href.split('&'); // 提取并解析每个部分 const params = parts.slice(1).reduce((acc, part) => { const [key, value] = part.split('='); if (key && value) acc[key] = value; return acc; }, {}); let roomId = params['roomId']; return (
{ // 向主页面发送消息请求返回主页面 window.parent.postMessage('goBack', '*'); }}> 值班专家{`>`} 在线聊天
{/* 当前房间状态信息 */} {/*

{room.state}

server:  {room.mediasoupVersion}

client:  {mediasoupClientVersion}

handler:  {room.mediasoupClientHandler}

*/} {/* 复制当前房间链接 */} {/*
*/}
{ me.audioOnly ? roomClient.disableAudioOnly() : roomClient.enableAudioOnly(); }} />
{ me.audioMuted ? roomClient.unmuteAudio() : roomClient.muteAudio(); }} />
roomClient.restartIce()} />
{/* 当前房间状态信息 */} {/* */}
); } componentDidMount() { const { roomClient } = this.props; roomClient.join(); } } Room.propTypes = { roomClient: PropTypes.any.isRequired, room: appPropTypes.Room.isRequired, me: appPropTypes.Me.isRequired, amActiveSpeaker: PropTypes.bool.isRequired, onRoomLinkCopy: PropTypes.func.isRequired }; const mapStateToProps = (state) => { return { room: state.room, me: state.me, amActiveSpeaker: state.me.id === state.room.activeSpeakerId }; }; const mapDispatchToProps = (dispatch) => { return { onRoomLinkCopy: () => { dispatch(requestActions.notify( { text: '房间链接已复制到剪贴板' })); } }; }; const RoomContainer = withRoomContext(connect( mapStateToProps, mapDispatchToProps )(Room)); export default RoomContainer;