我是最近开始使用Socket.IO的iOS开发人员。在我的iOS应用程序的生命周期中,我的服务器将从我的应用程序接收作为客户端的消息,但对于一个特定情况,服务器还需要从Web浏览器接收作为客户端的消息。我正在测试一个非常基本的浏览器UI,其中包括一个文本字段和一个按钮,点击该按钮时,需要将一个数字代码(在文本字段中输入)发送到服务器。这是看起来像:
<form>
Code:<br>
<input type="text" id="code" name="code"><br>
<input type="submit" id="validatebutton" value="Validate">
<script src="/socket.io-client/dist/socket.io.js"></script>
<script>
document.getElementById("validatebutton").onclick = function() {
var socket = io('http://localhost:3000');
socket.on('connect', function(clientSocket) {
clientSocket.emit('validateCode', document.getElementById("code"));
});
};
</script>
</form>
连接正常。当我运行此代码时,客户端成功连接到侦听套接字服务器。唯一的问题是没有执行事件处理程序。我可能非常离开这里,但我要去的是一个客户端事件处理程序,它包含在Swift SDK中:
self.socket.on(clientEvent: .connect, callback: { (data:[Any], ack:SocketAckEmitter) in
// Do something here
})
self.socket.connect()
我只是假设Javascript客户端也有一个客户端事件处理程序(名为'connect'
),客户端在连接服务器时会收到该处理程序。就像我说的,我可能会离开这里。我只是关注他们网站上发布的Socket.IO文档,它告诉我这样做。如果有人可以告诉我我错过了什么,或者我做错了什么,我将不胜感激。抱歉所有的noobishness,但我真的不知道还有什么地方可以转,因为官方文档很模糊,Stack上的另一个问题对我来说有点太高级了。
答案 0 :(得分:0)
我不会将emit
函数放在connect中。尝试在您的客户端中发出如下所示的内容
<script>
var socket = io('http://localhost:3000');
document.getElementById("validatebutton").onclick = function() {
socket.emit('validateCode', document.getElementById("code"));
};
</script>
你的点击事件可能正在执行,但是发出不是因为它被包裹在connect
函数中(只有当套接字连接到服务器时才执行)
此外,我会将JavaScript放在自己的文件中,但就目前而言,至少在表单(不在其中)之后才能正常工作。