我正在尝试通过向服务器发送自定义事件,使用Socket.io 0.7让Python客户端与Node.js服务器通信.
基于我在GitHub上找到的Socket.io引用,以及下面的WebSocket Python库.
到目前为止,这是我的代码:
节点服务器
io.sockets.on('connection', function (socket) {
socket.on('newimg', function(data) {
console.log(data);
});
});
Run Code Online (Sandbox Code Playgroud)
Python客户端
def handshake(host, port):
u = urlopen("http://%s:%d/socket.io/1/" % (host, port))
if u.getcode() == 200:
response = u.readline()
(sid, hbtimeout, ctimeout, supported) = response.split(":")
supportedlist = supported.split(",")
if "websocket" in supportedlist:
return (sid, hbtimeout, ctimeout)
else:
raise TransportException()
else:
raise InvalidResponseException()
try:
(sid, hbtimeout, ctimeout) = handshake(HOSTNAME, PORT) #handshaking according to socket.io spec.
Except Exception as e:
print e
sys.exit(1)
ws …Run Code Online (Sandbox Code Playgroud) 我希望停止跟踪文件,但仍然将它们保存在我的工作树中.
我已经聚集了,这git rm --cached FILE将让我这样做.但是,如果其他人撤消此更改,是否会删除其本地副本?
我试图围绕ES6中的类的语法.同时通过Bonnie Eisenman的Learning React Native学习Fabric本土.
this当回调是一个类"方法"时,我遇到了一个关于在回调中访问的问题.我知道this在StackOverflow上已经多次提出了关于回调词法的问题.例如,
如何在回调中访问正确的`this`上下文?.
根据我在网上的研究,我遇到了一个解决方案.但我不确定这是在ES6中这样做的正确方法.
当我尝试以下内容时,我的问题出现了:
class WeatherProject extends Component {
constructor(props) {
super(props);
this.state = {
zip: ''
};
}
_handleTextChange(event) {
console.log(event.nativeEvent.text);
this.setState({zip: event.nativeEvent.text})
}
render() {
return (
<TextInput
style={styles.input}
onSubmitEditing={this._handleTextChange}/>
);
}
}
Run Code Online (Sandbox Code Playgroud)
(我只是对本书中的示例进行了略微修改,以匹配ES6类语法和导入/导出语法而不是Require.)
如果我这样做,thisin _handleTextChange是未定义的(无法读取未定义的属性'setState').我对此感到惊讶.来自其他OO语言,我正在解释,好像这个方法表现得更像是一个静态方法.
我已经能够通过跳过类方法和使用箭头符号来解决这个问题.onSubmitEditing={event => this.setState({name: event.nativeEvent.text})}.哪个工作正常.我没有遇到任何问题或困惑.
我真的想弄清楚如何调用类方法.经过一番研究后,我通过以下方式成功实现了它的工作:onSubmitEditing={this._handleTextChange.bind(this)}.也许我误解了JavaScript的一个基本方面(我是JS的初学者),但这对我来说似乎完全是疯了.是否真的无法从方法中访问对象的上下文而没有将对象显式绑定到...它自己的方法,在它被调用的位置?
我也尝试添加var self = this;在构造函数中并调用self.setState的_handleTextChange.但是,发现不起作用并不是太惊讶.
当它被称为回调时,从其中一个方法中访问对象的正确方法是什么?
I am using React hooks and trying to read state from within a callback. Every time the callback accesses it, it's back at its default value.
With the following code. The console will keep printing Count is: 0 no matter how many times I click.
function Card(title) {
const [count, setCount] = React.useState(0)
const [callbackSetup, setCallbackSetup] = React.useState(false)
function setupConsoleCallback(callback) {
console.log("Setting up callback")
setInterval(callback, 3000)
}
function clickHandler() {
setCount(count+1);
if (!callbackSetup) {
setupConsoleCallback(() => {console.log(`Count is: ${count}`)})
setCallbackSetup(true) …Run Code Online (Sandbox Code Playgroud) 我最近试图学习如何使用std::shared_ptr.在修改现有代码时,我发现自己在使用成员变量分配时(在初始化列表之外)时感到困惑.
我的旧代码:
Class A {
Base* member_var;
A() {
this->member_var = new Derived();
}
};
Run Code Online (Sandbox Code Playgroud)
我的新代码:
Class A {
std::shared_ptr<Base> member_var;
A() {
//Note the shared_ptr is given type Derived, matching the object.
this->member_var = std::shared_ptr<Derived> (new Derived());
}
};
Run Code Online (Sandbox Code Playgroud)
它是否正确?或者这可能更正确?:
Class A {
std::shared_ptr<Base> member_var;
A() {
//Note the shared_ptr is of type Base, matching the member type.
this->member_var = std::shared_ptr<Base> (new Derived());
}
};
Run Code Online (Sandbox Code Playgroud)
这两个陈述有什么区别.
令人担忧的是,我似乎无法找到我在这里尝试做的任何代码示例.我的使用方法是std::shared_ptr错误的吗?
编辑:感谢大家的帮助.我想我引起了一些困惑.为了将来的可读性,我将扩展为什么我选择采用这种方法.我选择用一个简单的代码示例来说明我的问题.在我的实际问题中,我不使用a Class A,实际上我使用的是struct.这个结构的唯一目的是帮助我整齐地抓住各种不同对象的许多实例.我经常最终单独传递(通过引用)每个对象,而不是结构本身,作为函数的参数.此外,当我将整个结构作为参数时,我倾向于通过值传递这个结构.因此我有兴趣制作这些shared_ptr,而不是unique_ptr.我一直在争论改变一切并将所有这些封装在一个类中,比如Class A在我的例子中,并传递了类的实例传递引用对象实例.在这种情况下,我同意所有评论过的人,并且 …
我有许多类,我提供了一个Init()函数.鉴于使用此代码的程序员可能忘记调用Init(),或者之前可能调用析构函数Init(),我已经编写了析构函数来检查对象的状态.我觉得这写得不是很好,如果可能的话,想通过初始化和分配构造函数中所需的一切来避免这种情况(Scott Meyers建议也不要使用初始化方法).然而,当使用可选参数/多个构造函数时,我一直在努力寻找一种方法.
当前代码:
class A {
Init(B* some_other_object);
Init(B* some_other_object, C* an_optional_argument);
...
}
int main(int argc, const char* argv[]) {
...
A a;
if(somecase)
a.Init(b1, c1);
else
a.Init(b1);
}
Run Code Online (Sandbox Code Playgroud)
期望的代码:
class A {
explicit A(B* some_other_object);
A(B* some_other_object, C* an_optional_argument);
...
}
int main(int argc, const char* argv[]) {
...
if(somecase)
A a(b1, c1);
else
A a(b1);
}
Run Code Online (Sandbox Code Playgroud)
当然,这里的问题是变量a立即超出范围.所以我求助于分配给堆.
int main(int argc, const char* argv[]) {
...
A* a;
if(somecase)
a …Run Code Online (Sandbox Code Playgroud) c++ ×2
javascript ×2
c++11 ×1
constructor ×1
ecmascript-6 ×1
git ×1
git-rm ×1
node.js ×1
python ×1
react-hooks ×1
react-native ×1
reactjs ×1
shared-ptr ×1
socket.io ×1
websocket ×1