我的目的是让客户在歌曲进度的不同阶段播放正在播放的歌曲的状态。
这是我的客户端代码
var app = angular.module('App', []);
app.controller("AppCtrl", function($scope, $http) {
var socket = io.connect('http://localhost:3000');
socket.on('connect',function(){
socket.emit('message', 'Hello server');
});
socket.on('songStartFromServer', function(data) {
console.log('Song Started From Server' + data.soundUrl);
})
socket.on('broadcastPosition', function(data){
console.log('new position !!!!');
});
socket.on('sampleEmit', function(data){
console.log('Sample Emit ' + data.sampledata);
});
soundManager.setup({
// where to find the SWF files, if needed
url: '/path/to/swf-directory/',
onready: function() {
// SM2 has loaded, API ready to use e.g., createSound() etc.
var mySound = soundManager.createSound({
url: 'path to url',
whileplaying: function() {
$(".progBar").css('width', Math.ceil((this.position/this.duration) * 100) + '%');
var currentPercentage = (this.position / this.duration) * 100;
console.log( currentPercentage + '%');
if ((currentPercentage > 5) && (currentPercentage < 5.1)) {
socket.emit('broadcastSongProgress', {position: this.position});
// mySound.setPosition('mySound', 1000);
};
},
});
$scope.emitData = function() {
mySound.play();
socket.emit('songStart', {soundUrl: mySound.url});
};
},
ontimeout: function() {
}
});
继承我的服务器端代码,其想法是发出&#39; broadcastPosition&#39;当&#39; broadcastSongProgress&#39;进入服务器
io.sockets.on('connection', function(socket) {
socket.emit('sampleEmit', {sampledata: 'mysample'});
socket.on('soundManagerReady', function(data){
console.log('emit received from client!');
});
socket.on('broadcastSongProgress', function(data){
socket.emit('broadcastPosition', data);
console.log('SONG IS AT ' + data.position);
});
socket.on('songStart', function(data){
console.log('SONG STARTED AND URL IS ' + data.soundUrl);
socket.emit('songStartFromServer', data);
});
});
//客户端接收
socket.on('broadcastPosition', function(data){
//this is not logging on client side even though it gets to the server
console.log('new position!!' + data.position);
});