[英]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.