将数据发送给特定用户(套接字上缺少错误处理程序)

时间:2016-02-23 15:25:43

标签: javascript node.js socket.io

我想将数据发送到服务器上连接的特定客户端。

我有这个架构:

 <form class="register-store">
                            <div class="row">
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_name"><?php esc_attr_e( 'Store Name', 'compare' ) ?> <span class="required">*</span></label>
                                        <input type="text" class="form-control" name="store_name" id="store_name">
                                        <p class="field-description"><?php _e( 'Input name of your store', 'compare' ) ?></p>
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_url"><?php esc_attr_e( 'Store URL', 'compare' ) ?> <span class="required">*</span></label>
                                        <input type="text" class="form-control" name="store_url" id="store_url">
                                        <p class="field-description"><?php _e( 'Input link to your store', 'compare' ) ?></p>
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_contact_name"><?php esc_attr_e( 'Your Name', 'compare' ) ?> <span class="required">*</span></label>
                                        <input type="text" class="form-control" name="store_contact_name" id="store_contact_name">
                                        <p class="field-description"><?php _e( 'Input your full name', 'compare' ) ?></p>
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_contact_phone"><?php esc_attr_e( 'Your Phone', 'compare' ) ?> <span class="required">*</span></label>
                                        <input type="text" class="form-control" name="store_contact_phone" id="store_contact_phone">
                                        <p class="field-description"><?php _e( 'Input your phone with internation prefix', 'compare' ) ?></p>
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_contact_email"><?php esc_attr_e( 'Your Email', 'compare' ) ?> <span class="required">*</span></label>
                                        <input type="text" class="form-control" name="store_contact_email" id="store_contact_email">
                                        <p class="field-description"><?php _e( 'Input your mail for contact', 'compare' ) ?></p>
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_package"><?php esc_attr_e( 'Chose your package', 'compare' ) ?> <span class="required">*</span>
                                        <?php
                                        $all_packages_link = compare_get_permalink_by_tpl( 'page-tpl_packages' );
                                        if( $all_packages_link !== 'javascript:;' ):
                                        ?>
                                        <a href="<?php echo esc_url( $all_packages_link ) ?>" class="pull-right"> <?php _e( 'Check list of available packages', 'compare' ) ?></a></label>
                                        <?php endif; ?>
                                        <select name="store_package" id="store_package" class="form-control">
                                            <option value=""><?php _e( 'Select Package', 'compare' ) ?></option>
                                            <?php echo compare_list_packages(); ?>
                                        </select>
                                        <p class="field-description"><?php _e( 'Select package for your store', 'compare' ) ?></p>
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_xml_feed"><?php esc_attr_e( 'Store Feed URL', 'compare' ) ?> <span class="required">*</span></label>
                                        <input type="text" class="form-control" name="store_xml_feed" id="store_xml_feed">
                                        <p class="field-description"><?php _e( 'Input link to your XML / CSV products feed', 'compare' ) ?></p>
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <div class="input-group">
                                        <label for="store_logo"><?php esc_attr_e( 'Store Logo URL', 'compare' ) ?> <span class="required">*</span></label>
                                        <input type="text" class="form-control" name="store_logo" id="store_logo">
                                        <p class="field-description"><?php _e( 'Input link to your store logo', 'compare' ) ?></p>
                                    </div>

我目前有以下代码:

chat = {
    rooms: [
        {
            users: [
                {
                    client: {/* socket.io client */},
                    pseudo: ''
                }
                ...
            ],
            messages: [...]
        }
        ...
    ]
}

但是当我尝试运行代码时(当客户端发送消息时),我遇到了服务器端错误:var chat = { // ..., sendMessagesTo: function(event, room) { var users = room.users; var msg = room.messages; var len = users.length; for (var i = len; i--;) { users[i].client.emit(event, msg); } }, } io.on('connection', function(client) { // user = {client: client, pseudo: 'somePseudo'}; // user is added in the chat > rooms > users array; chat.sendMessagesTo('newMessage', someSpecificRoom); // ... }); 上缺少错误处理程序。

我希望你有一个解决方案:)。

谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道发生了什么。它适用于这个解决方案:

io.to(users[i].client.id).emit(event, room.messages);

我将client.id存储为:

user = {client: {id: client.id}, pseudo: data.pseudo};