我发现Tokbox是一个很棒的视频聊天服务。是否可以在tokbox中单独使用文本聊天?或者在Takbox中与视频聊天?
由于
答案 0 :(得分:1)
您可以使用OpenTok信号API在连接到OpenTok会话的客户端之间发送文本和数据。这些消息允许开发人员构建基本的文本聊天,从一个客户端向另一个客户端发送指令,并创建其他有价值的体验。
检查documentation如何使用信令。
但也许可以考虑使用socket.io构建文本聊天。
答案 1 :(得分:0)
我建立了一个带有视频流和文字聊天的系统。您可以使用tokbox信号。
<div id="filesic" class="files"></div>
<br />
<input type="submit" id="submit_easy_docs" class="btn btn-success btn-lg btn-block" value="Gem filer i easyPX" />
<input type="radio" name="doctype" value="1">praktik<br>
<input type="radio" name="doctype" value="2">karakter</div>
</div>
</form>
</div>
</div>
</section>
</aside><!-- /.right-side -->
</div><!-- ./wrapper -->
<script src="js/jquery-1.11.0.min.js"> </script>
<script src="js/jquery-ui-1.10.3.min.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script src="js/app.js" type="text/javascript"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<script>
$(document).ready(function(){
$("#easy_upload").boxRefreshGetTestFromJour({
source: "ajax/easyPx_upload_fins_tests.php",
param: "#jourNo"
});
$.ajaxSetup ({
// Disable caching of AJAX responses
cache: false
});
$("input[type='checkbox'], input[type='radio']").iCheck({
checkboxClass: 'icheckbox_minimal',
radioClass: 'iradio_minimal'
});
$('#upload_f').hide();
/*$("#jourNo").keydown(function(event){
if(event.keyCode == 13 || event.keyCode == 9){
$(".Seach-btn").click();
}
});*/
$('#jourNo').keypress(function (e) {
c = e.which ? e.which : e.keyCode;
if (c == 13) {
$(".Seach-btn").click();
e.preventDefault();
return false; //<---- Add this line
}
});
});
</script>
<script>
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var count = 1;
var url = 'upload/php/',
uploadButton = $('<button/>')
.addClass('btn btn-primary')
.prop('disabled', false)
.text('Upload ...')
.on('click', function () {
var $this = $(this),
data = $this.data();
$this
.off('click')
.text('Fortryd')
.on('click', function () {
$this.remove();
data.abort();
});
data.submit().always(function () {
$this.remove();
});
});
/*UPLOAD AF INDSCANNEDE DOKUMENTER*/
$('#fileuploadic').fileupload({
url: url,
dataType: 'json',
autoUpload: true,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf)$/i,
maxFileSize: 5000000, // 5 MB
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
//$('#progressic').show();
$('#progress-bar-procent').css('color','#000');
data.context = $('<div/>').appendTo('#filesic');
$.each(data.files, function (index, file) {
var node = $('<p/>')
.append($('<span/>').text(file.name));
node.appendTo(data.context);
});
}).on('fileuploadprocessalways', function (e, data) {
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.preview) {
node
.prepend('<br>')
.prepend(file.preview);
}
if (file.error) {
node
.append('<br>')
.append($('<span class="text-danger"/>').text(file.error));
}
if (index + 1 === data.files.length) {
data.context.find('button')
.text('Upload')
.prop('disabled', !!data.files.error);
}
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
if(progress == 100) $('#progressic').hide();
else $('#progressic').show();
$('#progress-bar-procent').html(Math.round(progress)+'%');
if(Math.round(progress >58)){
$('#progress-bar-procent').css('color','#fff');
}
$('#progressic .progress-bar').css(
'width',
progress + '%'
);
}).on('fileuploaddone', function (e, data) {
var fileCon = $('#fileuploadic');
$.each(data.result.files, function (index, file) {
if (file.url) {
var link = $('<a>')
.attr('target', '_blank')
.prop('href', file.url)
.prop('id',index);
$(data.context.children()[index])
//.append('<a href="'+ file.url +'" target="_blank">'+file.name+'</a>')
.wrap(link);
$(data.context[index]).prepend('<button class="btn btn-danger btn-xs pull-right deleteimg" id="del_'+count+'" title="" data-toggle="tooltip" data-original-title="Slet"><i class="fa fa-times"></i></button>');
$(data.context[index]).append('<input type="hidden" id="file_'+count +'" name="files[]" value="upload/php/files/'+file.name+'" />');
$('.deleteimg').on('click', function(event){
if($('input[name="files[]"]').length <= 2) $('#submit_easy_docs').attr('disabled', true);
else $('#submit_easy_docs').attr('disabled', false);
$(this).next('a').remove();
$(this).next('input').remove();
$(this).remove();
});
//$('<p/>').html('<input type="hidden" id="file_'+count +'" name="files[]" value="upload/php/files/'+file.name+'" />').appendTo(fileCon);
count = count +1 ;
} else if (file.error) {
var error = $('<span class="text-danger"/>').text(file.error);
$(data.context.children()[index])
.append('<br>')
.append(error);
}
});
$('#submit_easy_docs').removeAttr('Disabled');
});
}).on('fileuploadfail', function (e, data) {
$.each(data.files, function (index, file) {
var error = $('<span class="text-danger"/>').text('File upload failed.');
$(data.context.children()[index])
.append('<br>')
.append(error);
});
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
</script>
</body>
</html>
https://tokbox.com/developer/guides/signaling/js/
希望它有所帮助!