套接字IO未连接到正确的服务器。

时间:2016-03-31 14:11:48

标签: javascript node.js sockets server sendgrid

我刚开始学习节点,并将来自互联网的一些零碎拼凑在一起。我想使用node的一件事是SendGrid从客户端发送电子邮件。我通过在socket.io客户端手动输入socket = io.connect(http://localhost:8080);(就像所有人都说的那样)来完成这项工作。在本地运行良好,直到我在heroku或类似的服务上托管它。

这是我的服务器代码的样子(下面的函数无关紧要,因为它们只是运行sendgrid的东西:

var express = require('express');
var app = express();

var server = require('http').createServer(app);
var io = require('socket.io')(server);

// This is the socket.io port. I want the client to go through this.
server.listen(8080);

// this is used to serve a static html page in the public folder.
// I feel like the way I have this set up is part of the issue
app.set('port', (5000));
app.use(express.static(__dirname + '/public'));

app.listen(app.get('port'), function() {
    console.log('Node app is running on port ' + app.get('port'));
});

我转到地址http://localhost:5000查看服务器的html。

以下是我编写的客户端代码:

// Init the socket
socket = io.connect('http://localhost');
// send stuff through it. this stuff doesnt matter. but it sends values
// Via json to the server to then use in an email.
socket.emit('sendCompile', {adr: receptients, bod: body });

这给了我错误:

socket.io-1.4.5.js:1 GET 
http://localhost/socket.io/?   
EIO=3&transport=polling&t=LFC_cxO 

任何帮助将不胜感激。 (我一直在研究这个问题超过5个小时:D)

PS:我已经尝试将其更改为socket = io();socket = io.connect();,就像其他人似乎都认为的那样。但这些都不起作用。我觉得这是一个关于我如何编写服务器的问题,因为我只是在找到它们时拼凑了一些东西。

1 个答案:

答案 0 :(得分:-1)

您需要将域名从localhost更改为您的网站,并添加端口,例如:

 global $wpdb; // Get the global $wpdb
 $order_id = {Your Order Id}

 $table = $wpdb->prefix . 'postmeta';
 $sql = 'SELECT * FROM `'. $table . '` WHERE post_id = '. $order_id; 

        $result = $wpdb->get_results($sql);
        foreach($result as $res) {
            if( $res->meta_key == 'billing_phone'){
                   $phone = $res->meta_value;      // get billing phone
            }
            if( $res->meta_key == 'billing_first_name'){
                   $firstname = $res->meta_value;   // get billing first name
            }

            // You can get other values
            // billing_last_name
            // billing_email
            // billing_country
            // billing_address_1
            // billing_address_2
            // billing_postcode
            // billing_state

            // customer_ip_address
            // customer_user_agent

            // order_currency
            // order_key
            // order_total
            // order_shipping_tax
            // order_tax

            // payment_method_title
            // payment_method

            // shipping_first_name
            // shipping_last_name
            // shipping_postcode
            // shipping_state
            // shipping_city
            // shipping_address_1
            // shipping_address_2
            // shipping_company
            // shipping_country
        }

应该成为

socket = io.connect('http://localhost');

另请注意,您用于套接字的端口需要打开 - 如果端口未打开,您将遇到更多问题。