从socket.io返回值

时间:2015-08-15 13:56:08

标签: javascript php jquery node.js socket.io

这里我使用节点js和socket.io为我的网站。我希望返回值为' newString'执行以下功能时。现在我正在获得正确的值#newString'在函数内部。但我需要在函数外部。

<script>
function createSocketPlayList(){
    var page            =   'notification_playlist';
    var socket = io.connect('http://localhost:8000', { query: "from=<?php echo $_SESSION['userId']?>&page="+page });
    socket.on('notification_playlist', function (data_playlist) {
        var usersList_playlist    = "";
        var musicTitle            = "";
        var myPlaylist            = "";
        $.each(data_playlist.users_playlist,function(index,user){
                musicTitle        = "<?php echo addslashes($objCommon->html2text($allMyPlayList['music_title']))?>";
                usersList_playlist +=   "{ ";
                usersList_playlist +=   "mp3:'<?php echo SITE_ROOT?>uploads/music/"+user.music_url+"',title:'"+musicTitle+" ',artist:'Sanjeev Darshan | © Eros International Media Ltd',rating:4, buy:'#',price:'0.99',duration:'',cover:'<?php echo SITE_ROOT?>uploads/music/"+user.music_thumb+"',releaseddate:'17-05-2015'";
                usersList_playlist +=   " },";  
        });
        var newString = usersList_playlist.substr(0, usersList_playlist.length-1); 
    });

}
</script>

1 个答案:

答案 0 :(得分:1)

编辑:我添加了一个额外的功能(updatePlayList),因此您可以将播放列表设置为“out”。

您需要重新安排您的代码,以便它具有如下分隔的订阅调用(socket.on)和播放列表构建方法(createSocketPlayList):

var page = 'notification_playlist';
var socket = io.connect('http://localhost:8000', { query: "from=<?php echo $_SESSION['userId']?>&page="+page });

socket.on('notification_playlist', updatePlayList);

function updatePlayList(data_playlist) {
    var playlist = createSocketPlayList(data_playlist);
    // Update your list wherever it is on the page.
}

function createSocketPlayList(data_playlist){
    var usersList_playlist    = "";
    var musicTitle            = "";
    var myPlaylist            = "";
    $.each(data_playlist.users_playlist,function(index,user){
            musicTitle        = "<?php echo addslashes($objCommon->html2text($allMyPlayList['music_title']))?>";
            usersList_playlist +=   "{ ";
            usersList_playlist +=   "mp3:'<?php echo SITE_ROOT?>uploads/music/"+user.music_url+"',title:'"+musicTitle+" ',artist:'Sanjeev Darshan | © Eros International Media Ltd',rating:4, buy:'#',price:'0.99',duration:'',cover:'<?php echo SITE_ROOT?>uploads/music/"+user.music_thumb+"',releaseddate:'17-05-2015'";
            usersList_playlist +=   " },";  
    });
    return usersList_playlist.substr(0, usersList_playlist.length-1); 
}