繁体   English   中英

node Socket.io链接如何在服务器中提供not localhost(wamp / xampp)

[英]node Socket.io links how will give in server not localhost(wamp/xampp)

我是套接字会话的新手,但我学会了它在wamp / xampp localhost中的工作原理。 但是,当我搬到托管服务器。 不起作用。

<script src="http://localhost:3000/socket.io/socket.io.js"></script>

在wamp / xampp上面这项工作。 但在托管服务器中找不到。 我应该在src上给出什么。 我的主机是:aaa.bbb.com,它的端口是8803或bbb.com,它的端口是8803。

我已经尝试过将这些方式包括在内

<script src="/socket.io/socket.io.js"></script>
<script src="http://aaa.bbb.com:3000/socket.io/socket.io.js"></script>
<script src="http://bbb.com:3000/socket.io/socket.io.js"></script>

我的服务器端代码是

var express = require('express');
var app = express();
var socket = require('socket.io');
var server = require('http').createServer(app);
server.listen(3000);
var io = socket.listen(server);
var async = require('async');
var mysql= require('mysql');
var pool  = mysql.createPool({
   host     : 'XXXXX',
   user     : 'XXXXX',
   password : 'XXXX',
   database:'XXXXX',
 });

 var chatserver=require('./chatserver.js');
 var chatpage=io.of('/as/chatRoom').authorization(function (handshakeData, callback) {
 console.dir(handshakeData);
 handshakeData.page = '/welcome/chatRoom';
 callback(null, true);
 }).on('connection', function (socket) {
   console.dir(socket.handshake.page);
   chatserver.getUserFeeds(chatpage,socket,io,pool,async);
});

在节点的index.js的服务器端,您需要在http服务器上需要io

var 
app = require('express')(),
http = require('http').Server(app),
io = require('socket.io')(http);`

我没有把车把作为我的模板系统,所以,我继续说。 在您的主页模板文件中,您将添加

<script>
var socket = io.connect('http://bbb.com:3000');
   socket.on('connect', function(){
       socket.emit('authenticate', {data: "token"});
       socket.on('error', function(err){ alert(err); 
   });
   socket.on('unauthorized', function(err){
       alert("Disconnected");
       console.log("There was an error with the authentication:", err.message);
    });
    socket.on('disconnected', function() { alert('Disconnected') });
 });
 </script>

这对我在实时服务器上有用。

使用您的代码:

var express = require('express');
var app = express();
var socket = require('socket.io');
var server = require('http').createServer(app);
server.listen(3000);
var io = socket.listen(server);

socket.io.js路径是:

http://127.0.0.1:3000/socket.io/socket.io.js

你需要使用javascript或php。

Javascript:

(动态js包括)

var PORT = 3000;
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://" + document.location.hostname + ":" + PORT + "/socket.io/socket.io.js";
script.onerror = function () {
    console.log("Socket.io: unfound.");
};
script.onload = function () {
    console.log("Socket.io: loaded.");
    // Your code here.
    // startSocketIO();
};

document.getElementsByTagName("head")[0].appendChild(script);
// <script type="text/javascript" src="http://127.0.0.1:3000/socket.io/socket.io.js"></script>

PHP:

<script src="http://<?=$_SERVER["SERVER_NAME"]?>:3000/socket.io/socket.io.js"></script>

对不起迟到的回答。 它适用于我的代码本身。 只考虑我们必须在服务器中允许PORT 3000。 将端口号添加到IP表或禁用服务器防火墙,然后它工作正常:)

暂无
暂无

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

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