繁体   English   中英

无法从React客户端发送消息到Node.js Websocket服务器

[英]Can't send a message to Node.js websocket server from React client

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

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 !一切在服务器端都返回undefined 我刚刚开始使用websockets,无法找到使其正常工作的方法。 我主要指的是Mozilla ,但也没有用。 那么在这种情况下我到底在做什么错呢? 在此先感谢您的帮助!

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

您可以通过更改发送的对象来轻松更改此名称,以便将“开始”键绑定到名称上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM