无法从React客户端向Node.js 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()语句,它在发送消息时logging一条消息。 所以它实际上应该loggingstart但它loggingundefined 。 我到目前为止的尝试:1.发送刚刚start 2.定义一个像这样的对象:

 const data = { message: "start" } 

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

上面没有任何东西在服务器端返回undefined 。 我刚刚开始使用websockets,并找不到一种方法来使其工作。 我主要指的是Mozilla ,它也没有工作。 那么我在这种情况下究竟做错了什么? 在此先感谢,我感谢任何帮助!

在我看来,在.send()中发送的对象不包含名称键,所以当你将msgName定义为message.name时,它的计算结果是未定义的,因为该键在对象中不存在。

您可以通过更改您发送的对象来轻松地更改此关键字,以使“start”关键字被称为名称。