无法从React客户端

时间:2017-07-17 22:20:29

标签: javascript node.js reactjs websocket

我将以下代码作为服务器:

var http = require('http'),
    cors = require('cors'),
    connect = require('connect'),
    WebSocketServer = require('ws');

var DataController = function() {
    this.PORT = 8090;
    this.startWS();
    this.startServer();
}

DataController.prototype = {
    // code to start server...

    getMessage: function(_message) {
        var that = this,
        message = JSON.parse(_message),
        msgName = message.name;
        console.log('new message ' + msgName);
    switch(msgName){
        case 'start':
        // here is some code to perform actions
}

正如您在此处所见,我有getMessage函数可以触发某些事件并调用它我需要发送消息start。这很容易,对吗?对我来说,它并不令人兴奋。 这就是我尝试在我的React组件中执行此.send()方法的方法(我的React应用程序当然在不同的端口上运行):

import React, { Component } from 'react';

class App extends Component {

    componentDidMount() {
        const socket = new WebSocket('ws://localhost:8090');
        socket.onopen = function() {
            socket.send(JSON.stringify({message: "start"}));
        }
    }
    render() {
        return (
            <div className="container">App</div>
        )
    }
 }

 export default App;

我在这里尝试完成的任务 - 我只需要发送一个单词 - start来实际开始从服务器接收数据,但我无法理解为什么。请参阅我的服务器代码中的console.log()语句,该语句在发送消息时记录消息start。所以它实际上应该记录start,但它会记录undefined。 到目前为止我尝试了什么: 1.仅发送start 2.定义一个这样的对象:

const data = {
    message: "start"
}

然后将data传递给.send()函数 3.仅定义一个这样的变量:const data = "start"

上面没有任何作品!一切都在服务器端返回undefined。我刚刚开始使用websockets,并且无法找到让它工作的方法。我主要提到Mozilla并且它也没有用。那么在这种情况下我究竟做错了什么呢?在此先感谢,我感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

在我看来,您在.send()中发送的对象不包含名称密钥,因此当您将msgName定义为message.name时,它将评估为undefined,因为该对象不存在于对象中。

您可以通过更改发送的对象来轻松更改此设置,以便按键&#34;开始&#34;被称为名字。